【问题标题】:Set user agent for HTTP request in Chrome extension [duplicate]在 Chrome 扩展程序中为 HTTP 请求设置用户代理 [重复]
【发布时间】:2015-03-06 06:17:12
【问题描述】:

我正在用纯 JavaScript 编写 Chrome 扩展程序,并希望将 HTTP 请求的用户代理更改为给定 URL,因为该 URL 的所有者已请求使用某种格式的用户代理。

在添加用户代理修改行之前,以下代码一直有效,此时 Chrome 检查器控制台会给出错误 Refused to set unsafe header "User-Agent"

var xhr = new XMLHttpRequest();
xhr.open("GET", serviceURL, true, username, password);
xhr.setRequestHeader('User-Agent', 'MyExtensionName/0.0.1');
xhr.onreadystatechange = function() {
    // do some stuff
}
xhr.send(null);

为什么不能以这种方式修改用户代理?

【问题讨论】:

    标签: javascript google-chrome-extension xmlhttprequest user-agent


    【解决方案1】:

    您不能在此类请求中设置该标题,浏览器会阻止它 - 以及许多其他标题类型。

    但是,在 Chrome 扩展程序中,您可以使用 chrome.webRequest 更改标题。

    这将调整用户代理。按照Match Patterns 指南更改为您想要的URL。请记住将 webRequest 和 webRequestBlocking 的权限添加到您的清单中。

    chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
        for(var i=0; i < details.requestHeaders.length; ++i){
            if(details.requestHeaders[i].name === "User-Agent"){
                details.requestHeaders[i].value = "Desired User Agent Here";
    
                break;
            }
        }
        return {requestHeaders: details.requestHeaders};
    }, {urls: ["<all_urls>"]}, ["blocking", "requestHeaders"]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-23
      • 1970-01-01
      • 2014-09-26
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多