LoginSignup
4
2

More than 3 years have passed since last update.

CORS問題の対応の仕方をミスってた話

Posted at

フロントエンドとサーバサイドプログラムの連携をRestっぽい感じでやるようになって久しいが
ここに来て結構なポカミスをやったので備忘録として。

フロントには固定値のjsonを返すだけのダミーAPIを作って実装を進めてもらい
バックエンドはprod用としてそのダミーが動的なものになるように実装、最終的にダミーと差し替え
みたいな流れで制作をしている。

で、バックエンドはphpを使うが色々ごちゃごちゃやった後に

test.php
色々やる
header('Content-Type: application/json');
echo $json;
exit;

としてjsonを出力するのがセオリーである。
フロントはtest.phpをエンドポイントとしてjsとかで実行するわけだが
大体いつも問題になるのがCORSである。

セキュリティリスクを追々考えなければと思いつつApache側で

Header set Access-Control-Allow-Origin *

レスポンスヘッダに全てのドメインからアクセスOK!!を付けている。
で、それをすっかり忘れてphpの方にも記載したのがまずかった。

header('Content-Type: application/json');
header('Access-Control-Allow-Origin *');
echo $json;
exit;
Access to XMLHttpRequest at 'https://xxxxx.jp/api/test' from origin 
'null' has been blocked by CORS policy: 
The 'Access-Control-Allow-Origin' header contains multiple values '*, *', 
but only one is allowed.

エラーメッセージの冒頭だけ見てOriginの設定してるはずなのにな〜って思ってたが
よく見るとAccess-Control-Allow-Originヘッダが複数設定されてるよってエラーだった。

どっちか消して解消、というかまぁこの場合はphpの方で良いと思うが。
分かってるんだけど気付かないパターンのミスが一番怖い。

おわり。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2