我尝试从扩展程序发送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一起使用以防止锁定。
答案 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}时})。