この記事について
| 環境 | jQuery(ajax)+ PHP |
|---|---|
| 目的 | サブドメインへの ajax で出る XMLHttpRequest cannot load エラーを解消 |
| 結果 | 接続先で Access-Control-Allow-Origin ヘッダを返して解決 |
つまずきポイント要約
- サブドメインでもオリジンが違えば CORS でブロックされる
事象
jqueryでajaxを利用すると、コンソールにエラーが出た
実行したjquery
$.post(
//アクセスするURL
'http://sub.exemple.com',
{
'value': value
},
function(data){
//リクエスト成功時の処理
});
コンソールに出たエラー
XMLHttpRequest cannot load http://sub.exemple.com. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://exemple.com' is therefore not allowed access.
リクエスト成功時に実行される処理も行われない。
対処:Access-Control-Allow-Origin を返す
解決方法は、http://sub.exemple.com にAccess-Control-Allow-Origin レスポンスヘッダを追加する。
ワイルドカードですべてのドメインからの接続を許可
header("Access-Control-Allow-Origin: *");
特定のドメインからの接続のみを許可する場合
header("Access-Control-Allow-Origin: http://exemple.com");
.htaccessに書き込むなら
Header append Access-Control-Allow-Origin: *
