あるサイトのJavaScriptファイルで、別のサーバーのPHPファイルにAjax通信をしようとしたところ、以下のエラーが発生した。

Access to XMLHttpRequest at ‘https://hoge.com/hogehoge.php’ from origin ‘https://fuga.com/’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

これはブラウザの同一生成元ポリシーによるエラーで、外部リソースの読み込みが拒否されてしまうのだ。

今回はこのエラーをPHPファイル側で回避する方法を紹介する。

CORSヘッダ設定で解決する

解決法はいたってシンプル。

通信先のPHPファイルの先頭に下記の1行を追記するのみでOK。

header("Access-Control-Allow-Origin: *");

これで先ほどのエラーを解消することができる。