2016-05-03 5 views
2

異なるホスト上のページから同じリモートリソースを要求すると、最初の要求と同じホスト上のページからの次の要求では成功しますが、 。私はこの現象をfirefoxとchromiumの両方で見たことがあるが、奇妙なことに、必ずしも十分ではない。別のドメインから同じリソースを要求した場合にのみCORS要求が失敗する

あなたが表示されます最初のページに「リクエストデータ」ボタンを押した後:任意の順序でこれらのページにアクセスし、チェックアウトし、それを試してみること

リモートリソースの内容を含むダイアログで、他のホストで同じ操作を実行しようとすると、ブラウザコンソールで次のように表示されることがあります。

クロスオリジン要求がブロックされました:同じオリジンポリシーでは、リモートリソース をhttps://www.w3.org/People/Berners-Lee/card.rdfに読み込むことができません。 (原因:CORSヘッダー 'Access-Control-Allow-Origin'が 'http://test.lodide.io'と一致しません)。

ブラウザがアクセス制御の許可元のヘッダーをキャッシュしていて、新しいホストが一致しないと不平を言うようです。サーバは実際にヘッダの値として "*"を返すことに注意してください。

この問題を回避するには、XMLHttpRequestを発行するときにプログラムでキャッシュを無効にする方法がありますか?

+0

IEをクロスドメインに使用できます。または、サーバー側のコードを変更できる場合は、それを実行できます。 –

+0

@ Altmish-E-Azam、私はあなたがその問題を理解しているとは思わない。サーバーは正しいCORSヘッダーを送り返しています。そうでなければ、サーバー上で変更する必要があると思われることを教えてください。 –

答えて

3

私は、要求に応じてAccess-Control-Allow-Originの値を変更しても、w3.orgがVaryヘッダーを使用していないという問題が発生したと思います。 https://fetch.spec.whatwg.org/#cors-protocol-and-http-cachesを参照してください。

+0

合意。応答は最低でも「Vary:Origin」を使用する必要があります –

+0

w3cが要求に元のヘッダーが存在しない場合にのみ、ヘッダーの値として「*」を返すことに気付かなかった。応答は単に "*"を返すか、または可変ヘッダーを含んでいるはずですが、私はAllow-Origin-Header内のOriginヘッダーをミラーリングする理由がないと考えています。 –

関連する問題