google-chrome-extension - Chrome 扩展忽略 XMLHttpRequest.withCredentials 字段

标签 google-chrome-extension xmlhttprequest session-cookies

我正在开发一个 Chrome 扩展,它在各种网站上生成 XMLHttpRequest,但我注意到我的浏览器忽略了“withCredentials”字段。无论将其设置为 true 还是 false,响应总是相同的,并且包含通过浏览器进行简单 url 导航所请求的网页。

list :

"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,这将返回 stackoverflow.com 在某些 DOM 元素中加载了我的用户名。我的问题是:

  1. 这是按预期工作的行为吗?
  2. 如果是,是否有解决方法?从扩展内部发出 http 请求但忽略 cookie 或其他 session 信息? (更新:忽略所有凭证信息,如客户端证书或 http 身份验证)

我使用的是最新的 (22.0.1229.79 m) Chrome。

最佳答案

是的,此(发送凭据的操作) 是预期行为。 XMLHttpRequest level 2 specification #withCredentials说(这是该部分的最后一行):

The withCredentials attribute has no effect when fetching same-origin resources.

显然,在具有足够权限( list 文件)的 Chrome 扩展上下文中运行的代码会导致该属性的行为与请求来自同一来源一样。

我检查过从后台页面获取请求是否解决了任何问题,并得出结论认为它没有帮助。如果其他站点支持 CORS(通过 header ),则解决方案是不要在 list 文件的 "permissions" 部分提及该站点。 所有其他选项都在 this answer 中突出显示.

如果没有一种方法令人满意,那么问题二的答案是“不,没有解决方法”。

关于google-chrome-extension - Chrome 扩展忽略 XMLHttpRequest.withCredentials 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12677608/

相关文章:

selenium - selenium 驱动程序中的 session_id 和浏览器 cookie 中的 session 值是不同的值

ruby-on-rails - 将 session 从事件记录存储迁移到 cookie 存储

google-chrome - 在不重新安装的情况下更新 chrome 中的油脂猴脚本?

twitter-bootstrap - 波纹 - Uncaught Error : Load timeout for modules: app http://requirejs. org/docs/errors.html#timeout

google-chrome-extension - 将 iframe 大小调整为 Chrome 扩展内容脚本中的动态内容

javascript - JSON 响应未定义 : using XMLHttpRequest

python - 将 cookies txt 文件加载到 Python 中

javascript - chrome.tabs.Tab 未在 popup.js 脚本中定义

jquery - 如何修改我的 Web API 服务器代码以添加 Access-Control-Allow-Origin' header ?

vba - Excel VBA 中的 XmlHttp Post 不更新网站表单