2017-09-13 22 views
1

私はURL応答オフいくつかのヘッダを読みしようとしていると、コードの単純なビットがありますgetAllResponseHeaders()の出力がブラウザの表示と異なるのはなぜですか?

私のテストケースに次のように出力し、
$.ajax(manifestAnchor.href, { 
    type: "HEAD" 
}).done((data, textStatus, jqXHR) => { 
    console.log(jqXHR.getAllResponseHeaders()); 
}); 

date: Wed, 13 Sep 2017 09:44:15 GMT content-type: application/vnd.apple.mpegurl cache-control: no-cache

をしかし、ブラウザでレスポンスを調べると、別のヘッダーが表示されます。

enter image description here

これはなぜですか?

答えて

2

お使いのブラウザは唯一の応答はそのブラウザがすべき他のヘッダ名を一覧表示しますAccess-Control-Expose-Headersレスポンスヘッダを持っていない限り、Cache-ControlContent-LanguageContent-TypeExpiresLast-Modified、およびPragma応答ヘッダにアクセスできることにあなたのフロントエンドのJavaScriptコードを制限また公開する。

が質問に示す応答の場合

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headersを参照して、Access-Control-Expose-Headers: Date応答ヘッダもDateヘッダを露出するようにブラウザに指示します。したがって、あなたのコードはそのヘッダーを取得することができます。しかし、Access-Control-Expose-Headersヘッダーには、ServerAccept-Ranges、またはContent-Lengthのヘッダー名は記載されていません。だからあなたのコードはそれらを得ることができません。

また、あなたのブラウザは、あなたのコードがそれらを取得するのを妨げています。ブラウザー自体はすべての応答ヘッダーを取得します。そのため、ブラウザーのdevtoolsでそれらを見ることができます。しかし、あなたがそれらを見ることができるだけで、ブラウザがあなたのコードにそれらを公開するわけではありません。ブラウザは、Access-Control-Expose-Headersヘッダーに公開する内容だけを公開します。

関連する問題