HTTP通信でデータの送受信をしていたんだけど、3月23日以降、急にエラーが出るようになった。
デバッグしてみると、送信側でデータが正しく送れていないっぽい。
ただ、レンタルサーバーのPHPバージョンは変更していないし、プログラムも触っていない。
サーバーメンテナンスも特に無かったはず。
今まで何年も問題なく動いていたのに、なぜ急に…?
データ送信部分のコードはこんな感じだった
header(‘Content-Type: application/json; charset=utf-8’);
echo json_encode($data);
これを試しにこう変更してみた
header(‘Access-Control-Allow-Origin: *’); ←追加
header(‘Access-Control-Allow-Methods: POST’); ←追加
header(‘Content-Type: application/json; charset=utf-8’);
echo json_encode($data);
すると、普通に通信できるようになった。
原因はおそらくこれ
ブラウザ側でCORS制限に引っかかって、レスポンスがブロックされていた。
サーバー側でCORSヘッダーを返すようにしたことで、ブラウザが通信を許可してくれるようになったっぽい。
それにしても、今まで普通に動いていたのが謎。
ブラウザの仕様変更か、セキュリティ強化あたりが影響してる気がするけど、はっきりした原因は分からず…。
同じ現象でハマってる人は、CORSヘッダー追加で直るかも。

コメント