从Chrome扩展程序更改XMLHttpRequest中的User-Agent

时间:2014-01-13 11:57:51

标签: google-chrome-extension

我尝试从扩展程序发送HTTP请求,我需要更改用户代理。

我的代码如下所示:

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 个答案:

答案 0 :(得分:5)

您可以使用webRequest API轻松更改User-Agent标头 有关示例代码,请参阅Associate a custom user agent to a specific Google Chrome page/tab

从该答案中获取代码,并将"main_frame", "sub_frame"更改为"xmlhttprequest",以修改通过XMLHttpRequest发起的网络请求。

显然,为了防止死锁,此方法使用同步请求(即xhr.open的第三个参数设置为{{1}时})。