【发布时间】:2014-02-01 03:59:06
【问题描述】:
我正在尝试从需要更改用户代理的扩展发送 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”
我需要更改它,因为我的后端需要有一个特殊的用户代理,是否可以通过扩展来做到这一点?
我尝试了 webRequest API,在发送请求之前更改标头,但它说它不适用于扩展生成的 XMLHttpRequest 以防止锁定。
【问题讨论】:
-
@ExpertSystem 但是您可以使用 webRequest API 更改 UserAgent。这是文档中的示例之一。 developer.chrome.com/extensions/webRequest.html
-
@ExpertSystem 我知道它被认为是不安全的,但这不是普通的 javascript,它是一个浏览器扩展,我可以使用套接字并发送我想要的任何内容。为什么不允许发送任意 HTTP 请求?标准也禁止跨域请求,可以通过清单中的适当配置来完成。
-
w3.org/TR/cors 这个描述了您如何无法向不包括 OPTIONS 响应中的 Access-Control-Allow-Origin 的 Web 服务器发出 HTTP 请求。我没有更改我的服务器,我可以将 XMLHttpRequests 设置为响应中不包含该标头的目标。但无论如何,我并不是说 XMLHttpRequest 应该允许它,我要求一种方法来制作一个 HTTP 请求,在 chrome 扩展中指定我自己的 User-Agent。它可以是 chrome.* API 或其他。
-
我删除了我上面的评论,因为它们没用。我很确定我已经在文档中阅读过它,但显然我错了。 (对不起,造成混乱!)