ひっさびさにjQueryを使ってajaxであれこれやってたら、
他サイトAPIはたたけても、自作したテスト用のサイトのJSONが取得できないという謎に躓いたので、メモ。
ドメインが異なっている場合、表題のヘッダ(Access-Control-Allow-Origin)を設定していないと、データを読むことが出来ない。
特定のサイトからのみ読み込みOKとする場合、サイトのアドレスを、全サイトからアクセスOKとする場合、*を指定する。
とりあえずPHPだったので、以下の1文を追加して、解決。
header("Access-Control-Allow-Origin:https://**********.jp");
さて、上記ヘッダが正しく設定されていない場合、JSON出力側のサイト(サーバ)はどうなるのかというと
これ、ヘッダを見て、JSON取得側が表示を拒否っているだけなので、出力側の処理は正常終了扱いになっています。
PHP等々が動いていて、サーバ上でデータの処理やメール送信を行っている場合、そこまでは正常に動くわけです。
ブラウザからURLを直でたたいても、正常出力されちゃうわけです。
ブラウザのエラー出力をしっかり読めばすぐわかる話なのですが(苦笑)結構解決に時間がかかったので、メモ代わりに載せときます。
0 件のコメント:
コメントを投稿