web-dev-qa-db-ja.com

クロスドメインリソース共有GET: 'Responseから安全でないヘッダー "etag"の取得を拒否しました

カスタムヘッダーのない単純なGETリクエスト。応答は期待どおりに返されます。本文のデータにはアクセスできますが、ヘッダーにはアクセスできません。

「etag」ヘッダーにアクセスしようとすると、ブラウザで例外が発生します。

安全でないヘッダー「etag」の取得を拒否しました

Chrome、Safari、Firefoxはすべて同じように動作します。 IEではテストしませんでした。

ここで何が欠けていますか?

50
Mohamed

CORSを使用する場合は、単純な応答ヘッダーのみが公開されます。単純な応答ヘッダーが定義されています hereETagは単純な応答ヘッダーではありません。単純でないヘッダーを公開する場合は、Access-Control-Expose-Headersヘッダー、次のように:

Access-Control-Expose-Headers: ETag

ただし、Chrome、Safari、Firefoxには、単純でないヘッダーが正しく公開されないバグがあります。これは今では修正されているかもしれませんが、よくわかりません。

プリフライトは、GET/POST以外のhttpメソッドまたは非シンプルrequestヘッダー(およびresponseヘッダーについて尋ねています。

82
monsur

AJAX 2.0(クロスドメイン共有)は、W3Cによって最近発表された方法論です。 http://www.w3.org/TR/XMLHttpRequest2/#ref -cors

また、これを行う別の方法があります。これはJSON-Pと呼ばれ、JSONリクエストのようなものですが、クロスドメインに使用できます。 http://en.wikipedia.org/wiki/JSONP

どちらも、正しくセットアップされていないと、サイト所有者にとって非常に危険です。そのため、使用する際は注意してください。

[PS]これが役立つかどうかわからない: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

2
DarkMantis