2017-04-03 3 views
2

を使用して簡単なWebアプリケーションを構築しています。ReactJScreate-react-appフェッチAPIレスポンスヘッダーが表示されない

私はHeroku上でバックアップAPIを設定しており、POSTリクエストを作成できます。

fetch APIを使用してPOSTリクエストを行うと、応答は100%正確ですが、標準ヘッダーは2つしかありません。カスタムヘッダーを取得したい返信に公開ヘッダーを追加しました。ここにはプロットツイストがあります:Chrome Inspection ToolまたはPostman(APIツール)からヘッダーを見ると、カスタムヘッダーを含むすべてのヘッダーが表示されます。それはどんな違いをした場合、このフェッチ方法はReactJS部品の本体外側の関数から呼び出され、

fetch(theUrl, { 
    method: 'POST', 
    body: JSON.stringify({ 
    "placeholder": "placeholder" 
    }) 
}) 
.then(function(res) { 
    console.log(res.headers.get('CUSTOM_HEADER_NAME')); 
}) 

からは、ここに私が使用しているフェッチコードです。

カスタムヘッダーの名前はImage-Identification-Pathで、レスポンスヘッダーのヘッダーはImage-Identification-Pathの場合はAccess-Control-Expose-Headersです。 Here's the image from Postman

要約:フェッチを使用してカスタムヘッダーを取得するにはどうすればよいですか?

+0

これはクロスオリジンのリクエストですか? *「自分のレスポンスにヘッダーを公開しました」と言ったら、カスタムヘッダーの名前をAccess-Control-Expose-Headersレスポンスヘッダーの値に追加したことになりますか? – sideshowbarker

+0

はい、クロスオリジンのリクエストです。私は今ローカルホスト上で私のアプリを実行しています。私はこれをHerokuでもアップロードしてテストしましたが、同じ結果が得られます。 また、カスタムヘッダーの名前をAccess-Control-Expose-Headersレスポンスヘッダーの値に追加しました。 – Fahmid

+0

あなたのスクリーンショットは、Image-Identification-Pathヘッダー名がAccess-Control- * Allow * -Headersヘッダーの値にあることを示しています。あなたはそれをAccess-Control- * Expose * -Headersヘッダーの値に設定する必要があります。 (Access-Control-Allow-Headersはカスタム*要求*ヘッダー名を一覧表示するためのものです) – sideshowbarker

答えて

3

応答がAccess-Control-Expose-Headersというヘッダーを持ち、その値にカスタム応答ヘッダーの名前が含まれるように、要求が行われるサーバーを構成する必要があります。

これ以外の場合、ブラウザにカスタムヘッダーの名前が表示されない場合は、カスタム応答ヘッダーの値にアクセスすることはできません。

このような場合は、Postmanやブラウザのdevtoolsで応答を見ると、カスタムヘッダーが表示されることが予想されます。

しかし、ブラウザが応答でカスタムヘッダーを取得しているとは限らないため、ブラウザがクライアント側のJavaScriptコードにその文字列を公開するわけではありません。

原産地間の要求の場合、ブラウザは、そのヘッダー名がAccess-Control-Expose-Headersヘッダーの値にある場合にのみ、そのカスタム応答ヘッダーをクライアントコードに公開します。

+1

あなたの答えをありがとうが、私の質問によると、私はすでにAccess-Control-Expose-Headersヘッダーをサーバーの応答ヘッダー。 – Fahmid

+0

カスタムレスポンスヘッダーの名前は何ですか?そして、Access-Control-Expose-Headersの価値は何ですか? https://stackoverflow.com/posts/43175710/editを使用して質問を更新/編集し、その情報を追加してください。それ以外の場合は、ここで問題の原因が何であるか想像するのは難しいです – sideshowbarker

+0

同じ問題に直面している人にとっては、この答えは正しいです、それはAccess Control-Expose-Headersの代わりにAccess-Control-Allow- – Fahmid

関連する問題