mod_jsonp なるものを書きました。

mod_jsonp は、Apache のフィルタモジュールです。適当に手ででっち上げた JSON のコンテントを手軽に JSONP 化できるとおもしろいなーと思って、適当に作りました。

  • Content-Type が「application/json」
  • callback=... というクエリ文字列が Request URI に付加されている

という条件が満たされるときに、JSON のレスポンスを JSONP に変換する (単にレスポンスボディを関数呼び出しのための文字列で囲む)、ということをします。

ビルド方法

$ apxs -c mod_jsonp.c
$ libtool --mode=install cp mod_jsonp.la $PWD

などとしてビルドして、mod_jsonp.so を適当な場所にインストールしてください。

あとは、httpd.conf に

LoadModule jsonp_module mod_jsonp.so

などと書くだけ。簡単ですね。

使い方

Apache のフィルタモジュールとして実装されているので、ダイナミックなコンテントもこのモジュールによって強制的JSONP 対応にさせられます。

テキストファイルだったら、適当なディレクトリの .htaccess

ForceType "application/json; charset=UTF-8"

とでも書いておいて、JSON を記述したファイルをそのディレクトリ配下に置いたりしましょう。

BUGS

エンコーディングを一切考慮せず、闇雲にオクテット単位で文字列操作を行っているだけなので、UTF-16 などのレスポンスには対応していません。あしからず。