2014-01-13 13 views
6

ユーザーエージェントを変更する必要がある拡張機能からHTTPリクエストを送信しようとしています。Chrome拡張機能からXMLHttpRequestでユーザーエージェントを変更する

私のコードは次のようになります。そして、

function getXMLHttpRequest(method, url, extraHeaders) { 
    var xhr = new XMLHttpRequest(); 
    xhr.open(method, url, true) 

    for (var headerKey in extraHeaders) { 
     xhr.setRequestHeader(headerKey, extraHeaders[headerKey]); 
    } 

    return xhr; 
} 
//.... 

getXMLHttpRequest("POST", "....", { "User-Agent": "Blahblahblah" }) 

、私はエラーを取得する「危険なヘッダを設定することを拒否:UserAgentの」

私のバックエンドを持っている必要がありますので、私はそれを変更する必要があります特別なUser-Agentは、拡張機能からそれを行うことは可能ですか?

リクエストを送信する前にヘッダーを変更するためにwebRequest APIを試しましたが、ロックを防止するために拡張機能から作成されたXMLHttpRequestでは機能しません。

+1

@ExpertSystemただし、webRequest APIを使用してUserAgentを変更することはできます。これはdocの例の1つです。 http://developer.chrome.com/extensions/webRequest.html – HyLian

+0

@ExpertSystem安全でないと判断されていることは分かっていますが、これは通常のjavascriptではなく、ブラウザの拡張機能です。ソケットを使用して必要なものを送信できます。なぜ任意のHTTPリクエストを送信することを許可しないのですか?クロス・オリジンの要求は、標準によっても禁止されており、マニフェストの適切な構成で行うことができます。 – HyLian

+0

http://www.w3.org/TR/cors/これは、OPTIONSの応答でAccess-Control-Allow-Originが含まれていないWebサーバーにHTTPリクエストを送信できない方法について説明しています。私は自分のサーバーを変更していないので、XMLHttpRequestsをレスポンスのヘッダを含まないデスティネーションにすることができます。しかし、とにかく、私はXMLHttpRequestがそれを許すべきではないと言っています、私は自分のUser-Agentをchrome拡張の中に指定するHTTP Requestを作る方法を求めています。それはクロム* APIなどであってもかまいません。 – HyLian

答えて

4

webRequest APIを使用してUser-Agentヘッダーを簡単に変更できます。
サンプルコードについては、Associate a custom user agent to a specific Google Chrome page/tabを参照してください。

その回答のコードを取り、"main_frame", "sub_frame""xmlhttprequest"に変更して、XMLHttpRequestで開始されたネットワーク要求を変更します。

は、明らかに、デッドロックを防ぐために、この方法は、ない作業同期を有する要求を行い(すなわちxhr.openの第三のパラメータがfalseに設定されている場合)。

+0

ねえ、ロブ、いつもそうだった?安全でないXMLHttpRequestヘッダーの制限についてのドキュメントのどこかをchrome。* APIに適用して読んだことを覚えていますが、これ以上見つけることはできません。どんな洞察?私は私の心の外ですか? – gkalpak

+0

@ExpertSystem本当にリストがありますが、 "User-Agent"はその一部ではありません。 https://developer.chrome.com/extensions/webRequest.html#life_cycleで下にスクロールして、非表示のヘッダーの部分的なリストを表示します。残念ながら、このリストは「完全でも安定していることも保証されていません」ので、明確な答えを得るにはChromiumのソースコードを深く掘り下げなければなりません。 –

+0

ええ、リストを見ましたが、XHRと同じ "安全でない"ヘッダーも防止されていると明示的に述べている覚えがある人もいます。 OK、それから私はおそらくそれを失っています。ところで、あなたはいつもあなたのChromiumのソースコードを掘ることで私を驚かせました:) – gkalpak