wordpressでJSONP使わずにAjaxクロスドメインしたい

    目次

  1. 実装方法
  2. server1のhtml
  3. [wp]functions.php

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を指定しているところ。
これで疎通できる。

質問やご指摘など募集中です

(マークダウン記法使えます)