
JSONPは嫌い、そんな人は多い(よね?)
だから可能ならどこまでもAccess-Control-Allow-Originの設定だけでJSONを使える環境構築を推奨したい。
条件としてはリクエストを受け取る側のサーバのプログラム(PHP)に手を加えることができることだ。
無料ホスティングのWordpressだときついのかも。
今回は独自ドメイン&レンタルサーバで運用しているWordpressで試してみた。
実装方法
server1のhtmlからserver2においてあるwordpressのajax関数を叩きたいという想定。
server1のhtml
https://gist.github.com/soylatte/4969910.js
ここではjqueryを使って、server2のwpのajax関数を叩いているとする。実際はargの中にjsonデータを入れてある。
今回のサンプルでは使わないのでなくてもOK。
ただし、セキュリティ上の観点から秘密のキーワードみたいな言葉をjsonに入れておいて、wp側でそのキーワードが指定されているかどうかをチェックしてからデータを返すのがwpのajaxの定石っぽい。ここでは関係ないので割愛している。
[wp]functions.php
https://gist.github.com/soylatte/4969897.js
大切なのは、json_encodeをする前にheader関数で、Access-Control-Allow-Originを指定しているところ。
これで疎通できる。