クロスドメインリソース共有GET: '「危険なヘッダー「ETAG」を回答から得ることを拒否しました」
-
26-10-2019 - |
質問
カスタムヘッダーのない簡単なGETリクエスト。応答は予想通りに返されます。ボディ内のデータはアクセス可能ですが、ヘッダーではありません。
「ETAG」ヘッダーにアクセスしようとすると、ブラウザは例外を提起します。
危険なヘッダー「ETAG」を取得することを拒否しました
Chrome、Safari、Firefoxはすべて同じように振る舞います。 IEでテストしませんでした。
ここに何が欠けていますか?
解決
CORを使用すると、単純な応答ヘッダーのみが公開されます。単純な応答ヘッダーが定義されています ここ. ETag
単純な応答ヘッダーではありません。非シンプルヘッダーを公開する場合は、 Access-Control-Expose-Headers
ヘッダー、そうです:
Access-Control-Expose-Headers: ETag
ただし、非シンプルなヘッダーが正しく露出しないようにするChrome、Safari、Firefoxのバグに気づいたことに注意してください。これは今までに修正されるかもしれません、私は確信がありません。
プリフライトは非get/post httpメソッドまたは非シンプルにのみ必要なので、プレフィットリクエストを実行する必要はありません リクエスト ヘッダー(そしてあなたは尋ねています 応答 ヘッダー)。
他のヒント
Ajax 2.0(クロスドメイン共有)を試したことがありますか? 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