2016-08-15 8 views
12

私はfetch on chromeバージョン52.0.2743.82(64ビット)を使用しています。私は応答のすべてのヘッダーを取得したい。スニペットの後に返信するのはcontent-typeですが、chromeの開発ツールを調べると、他の多くのレスポンスヘッダーが表示されます。フェッチから他のヘッダーを取得する方法。フェッチからレスポンスのヘッダを取得する方法

fetch('https://httpbin.org/get') 
    .then(response => { 
     const headers = response.headers.entries(); 
     let header = headers.next(); 
     while (!header.done){ 
     console.log(headers.value); 
     header = header.next(); 
     } 
    }) 

私はgithub実装をポリフィリング(手動でオーバーライド)しようとしました。まだ運がありません。

+2

あなたが探しているヘッダが分かっていれば、response.headers.get( 'header-name')を試すことができます – KumarM

+0

このページの下部にある互換性テーブルを見ると、chromeがentries()をサポートしているとは言えません。まだ。 https://developer.mozilla.org/en-US/docs/Web/API/Headers – KumarM

答えて

26

ajaxを使用してドメイン間のコンテンツをリクエストするときに、すべてのヘッダーにアクセスすることはできません。原点が同じであれば、すべてのヘッダーにアクセスできます。

としては、W3仕様hereで説明した、唯一のContent-TypeLast-modifiedContent-LanguageCache-ControlExpiresPragmaヘッダがアクセス可能です。

さらにhttps://httpbin.org/getアクセス可能なヘッダーのリストからContent-Typeヘッダーのみを送信すると、それだけです。

編集:レスポンスにクライアントがアクセスするヘッダーをAccess-Control-Expose-Headersに送信して、非標準のCORS応答ヘッダーを公開することができます。

+0

これは非常に役に立ちました。 Rails 5の開発者にとって、 'config/initializers/cors.rb'の編集はうまくいきました。私は追加しました: 'expose:' 'Location ''、' 'resource '*''ステートメント – jasonseminara

関連する問題