【发布时间】:2012-09-22 13:23:29
【问题描述】:
我正在开发一个 Chrome 扩展程序,可以在各种站点上生成 XMLHttpRequest,但我注意到我的浏览器忽略了“withCredentials”字段。无论设置为 true 还是 false,响应总是相同的,并且包含通过浏览器的简单 url 导航请求的网页。
清单:
"background": {
"scripts": ["jquery.min.js", "daemon.js"],
"persistent": true
},
"permissions": [
"<all_urls>"
]
daemon.js 内部:
var xhr = new XMLHttpRequest();
xhr.open("GET", 'http://stackoverflow.com/', true);
xhr.withCredentials = false;
xhr.onload = function(e) {
$('body').html(xhr.responseText);
}
xhr.send();
尽管将 withCredentials 设置为 false,这将返回在某些 DOM 元素中加载我的用户名的 stackoverflow.com。我的问题是:
- 这是按预期工作的行为吗?
- 如果是,是否有解决方法?从扩展内部发出 http 请求但忽略 cookie 或其他会话信息? (更新:忽略所有凭据信息,如客户端证书或 http 身份验证)
我正在使用最新的 (22.0.1229.79 m) Chrome。
【问题讨论】:
-
这应该会有所帮助:stackoverflow.com/questions/11327593/…。我不确定
withCredentials应该如何/是否应该在 Chrome 扩展上下文中工作。 -
经过测试的 webRequest API,它对我有用。恐怕这并不能解决我的问题,因为除了标头/cookies之外,还有用于凭据传输的afaik方法,例如客户端证书。我也不想使用隐身窗口解决方案。更新:不,webRequest 在扩展上下文下不起作用,所以我无法从扩展内部修改 XHR 的标头:(
标签: google-chrome-extension xmlhttprequest session-cookies