同じドメインでCORSエラーが発生しましたか?


87

現在、奇妙なCORSの問題が発生しています。

エラーメッセージは次のとおりです。

XMLHttpRequest cannot load http://localhost:8666/routeREST/select?q=[...] 
Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin

2つのサーバー:

  • localhost:8666 / routeREST /:これは単純なPythonボトルサーバーです。
  • localhost:8080 /:Javascriptアプリケーションを実行するPythonsimpleHTTPserver。このアプリは、上記のサーバーでAjaxリクエストを実行しています。

何が問題になるのかについて何か考えはありますか?

編集:

そして...ポートが問題でした。あなたの答えをありがとう:)

誰かがPythonボトルサーバーも使用している場合は、この投稿に記載されている回答に従って、CORSの問題を解決できます: Bottle Py:jQueryAJAXリクエストのCORSの有効化


10
それらは異なるポートにあるため、同じではありません!
いくつかの

ポート番号が異なります。これはクロスオリジンルールに違反する可能性があります。

4
IEはポート番号を考慮しないことに注意してください。
レイニコラス2013年

@someほとんどのブラウザは、一方に「www」があり、もう一方にない場合、同じではないと結論付けています。細部に悪魔がいます。
めったに 'モニカはどこにあるのか'ニーディ2017

@ SeldomNeedy example.com、www.example.com、www1.example.com、mirror.www.example.comはすべて異なるドメインです。example.comexample.comexample.comexample.com:80443は、すべて異なる起源のものです。
いくつかの

回答:


124

プロトコルホスト ポートが同じ場合にのみ同じと見なされます:同一生成元ポリシー

有効にする場合は、ヘッダーを追加してクロスオリジンリソースシェアリング(cors)に従う必要があります。Mozillaにはあります

応答のヘッダーとしてAccess-Control-Allow-Originを追加する必要があります。すべての人に許可するには(おそらくそうすべきではありません):

Access-Control-Allow-Origin: *

複数のオリジン(たとえば、example.comとの両方www.example.com)をサポートする必要がある場合Access-Control-Allow-Originは、応答でOriginリクエストの-headerの値にを設定します(オリジンがホワイトリストに登録されていることを確認した後)。

また、一部のリクエストはOPTIONメソッドを使用してpreflight-requestを送信するため、独自のコードを作成する場合は、それらのリクエストも処理する必要があることに注意してください。については、Mozillaを参照してください。


8
これは、AJAXが関与するすべての場所で、赤い色、大文字、太字で強調表示する必要があります。
ゾルタン・シュミット

5
この回答の補足として、これ'Access-Control-Allow-Origin: https://example.com'は。と同等ではないことに注意してください'Access-Control-Allow-Origin: https://www.example.com'。これらの両方を介してサイトにアクセスできる場合は、応答ヘッダーに両方を含める必要があります。
めったに 'モニカはどこにあるのか'ニーディ2017

1
何のプリフライトリクエストがのような単純なリクエストに対してデフォルトで送信されないことに注意してくださいGETPOSTHEAD。詳細については、回答にリンクされているMDNの記事を参照してください。
エミールベルジェロン

あなたは、重複したヘッダーを持ってカント@SeldomNeedy
マイク・フリン

@MikeFlynn私の言い回しは確かに少し緩いものでしたが、私はそれを示唆しようとはしていませんでした。サーバーは、要求ごとに適切なヘッダーを送信するように構成する必要があります。
めったに 'モニカはどこですか'ニーディ

30

ポート番号が異なります。

スキーム、ホスト名、またはポートのいずれかが一致しない場合、要求はクロスドメインと見なされます。


1
443と80を除いて
ジョセフ・ラスト

17
443と80を含む
code_monk 2018

5
問題の確認が問題の解決策になるにはどうすればよいですか?答えの男を投稿します。
Ritesh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.