質問: **XMLHttpRequestで他オリジンへGET送信したら、コンソールログに下記エラーが表示されました** ※GET送信内容自体は、(送信先で)受信できました > > XMLHttpRequest cannot load http://foo.送信先.com/. No > > 'Access-Control-Allow-Origin' header is present on the requested > > resource. Origin 'http://bar.送信元.co.jp' is therefore not allowed > > access. > > > --- **質問** ・どう評価したら良いでしょうか? ・「同一生成元ポリシー」には、データ送信は含まれないのでしょうか? ・それとも、違反ではあるけれどもデータが送信されているのでしょうか? つまり非推奨? --- **最終的に知りたいこと** ・XMLHttpRequestで他オリジンへGET送信してもよいか ※送信元での結果取得は不要です --- **追記** ・GETリクエスト送信だけを XMLHttpRequest を使用して行う場合、「Webサーバー側でクロスオリジンを認めない」限りコンソールログにエラーメッセージは出力される、ということでしょうか?
回答: クロスオリジン、つまり別ドメインからのリクエストを受け付けるかどうかを決定するのはWebサーバーです。 コンソールログに出力されたエラーメッセージは「**Webサーバー**はクロスオリジンを認めるのであれば、その旨を明示すべき」と言っています。 説明が重複しますが、次のステップですのでブラウザーとしてはリクエストは送信されますし、エラーで正しいです。 1. ブラウザーはドメインA Webサーバーへリクエストを出す 2. ドメインA Webサーバーは「ドメインBへのリクエスト」を含むコンテンツを返す 3. ブラウザーはコンテンツに従いドメインB Webサーバーへリクエストを出す 4. ドメインB Webサーバーは単純にレスポンスを返す 5. ブラウザーはレスポンスヘッダーにクロスオリジンを認める旨が含まれていないことを検出し、エラーとする