2

Chrome 拡張機能で HTTP ヘッダーを読み取り、変更 (追加) したいと考えています。同じために chrome.webRequest API を使用しています。しかし、私はまだそれを読むことができません。これが私のコードです。

chrome.webRequest.onBeforeSendHeaders.addListener(

    function(details) {
    details.requestHeaders.push({name:"dummyHeader",value:"1"});
    return {requestHeaders: details.requestHeaders};
    },

    {urls: ["<all_urls>"]},
    ["requestHeaders"]

);

私は何が欠けていますか?

4

2 に答える 2

4

"blocking"リクエストを一時停止するには、フラグを ExtraInfoSpec リストに追加する必要があります。このフラグがない場合、onBeforeSendHeadersイベント リスナーの戻り値は無視されます。

chrome.webRequest.onBeforeSendHeaders.addListener(
    function(details) {
        details.requestHeaders.push({name:"dummyHeader",value:"1"});
        return {requestHeaders: details.requestHeaders};
    },
    {urls: ["<all_urls>"]},
    ["requestHeaders", "blocking"]
                      //^^^^^^^^
);

ドキュメント、特にイベントリスナーの登録セクションをもっと注意深く読むことをお勧めします。

于 2012-10-18T19:19:57.543 に答える
1

しかし、後で読むすべての人にとって、それは XmlHttpRequest の解決策ではありません。

明らかではありませんが、非同期リクエストはブロックできません。この問題の詳細については、問題132731 を参照してください。XmlHttpRequest の要求ヘッダーを変更する必要がある場合は、declarativeWebRequest を使用する必要があります

実装の例は、Chrome Rest クライアントのバックグラウンド ページ(declarativeRequest.setRules() 関数) にあります。

于 2012-10-19T15:23:24.380 に答える