2017-03-15 13 views
3

私はReactでfetch APIを使用していますが、JSONエンドポイントからいくつかのデータを取得しています。ヘッダーとともにカスタムのUser-Agent文字列を送信する(フェッチ)

私の要求の一部として、カスタムUser-Agent文字列を送信したいと思います。私は私の要求を検査するとき、現在、UA文字列は次のとおりです。

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 

は、私はすべての要求にヘッダーでパージングしていますので、私はちょうどそれがvariousplacesで述べているように、ヘッダーにUser-Agentは、オブジェクトを追加したい考え出しオンライン:

fetch(url, { 
    Accept: 'application/json', 
    'Content-Type': 'application/json', 
    'User-Agent': 'MY-UA-STRING' // <--- 
}) 

これは機能しません。私はそれがhereherehereと報告されているように、フェッチapiのバグのためだと感じています。

を使用してheadersの一部としてUAを渡す方法はありますか?

答えて

3

いくつかのテストの後、Chromeには実際にUser-Agentヘッダーのバグがあります。

これは、User-Agentヘッダーがあまりにもずっと前(2015年中頃)に許可されていないヘッダーの一覧にあったためです。

最近、許可されていないヘッダーのリストからこの特定のヘッダーが削除されたため、Firefox(バージョン43以降)ではフェッチ呼び出しでUser-Agentを変更できるようになりましたが、Chromeでは使用できません。

ここFirefox bugだ、とChromium bug

それが最初の場所で禁止された理由は、任意のデータを送信するためにUser-Agentヘッダを使用するためには良い理由は本当にありませんということ、送信するために使用する必要がありました実際のUser-Agent、Fetch of XMLHttpRequestのようなブラウザー内のリクエストは、とにかくユーザーエージェントを偽装する正当な理由がないはずです。バグがChromeで修正される予定

anyones推測ですが、それは確かに、もはや許可されないヘッダのリストなどのバグであるUser-Agentヘッダを一覧表示し、取得のオプションオブジェクトで指定されたとき、それは変更する必要があります。

追記として、あなたは一般的にHeaders Interfaceを使用してヘッダを作成しなければならない、とheadersキー

let headers = new Headers({ 
    "Accept"  : "application/json", 
    "Content-Type" : "application/json", 
    "User-Agent" : "MY-UA-STRING" 
}); 

fetch(url, { 
    method : 'GET', 
    headers : headers 
    // ... etc 
}).then(... 
options objectsにそれらを含めます
関連する問題