【发布时间】:2016-06-03 04:58:28
【问题描述】:
我正在尝试制作一个 Chrome 扩展程序,它使用 Fetch API 从 Github 上的 Pull Requests 中抓取一些细节,然后将它们显示在其他地方。当我尝试将它与 Github 上的非公共存储库一起使用时,我遇到了一些问题。我相信这与 CSRF 保护以及管理 Chrome 扩展程序访问会话 cookie 的规则有关。
我的扩展程序的manifest.json 中有以下内容:
"content_scripts": [{
"matches": [
"*://github.com/*/*/pulls"
],
"js": ["script/underscore-1.8.3.min.js", "script/content.js"]
}],
"permissions": [
"tabs",
"activeTab",
"*://github.com/*",
"webNavigation"
]
但是当我从 script/content.js 中运行以下命令时:
fetch('/redacted/redacted/pull/4549', {credentials: 'same-origin'}).then((response) => {
return response.text();
}).then((text) => {
// do cool stuff
})
这会从 Github 生成 404 响应。使用 Chrome Inspector 的网络选项卡检查此请求,我可以看到它没有随请求一起发送我的 GitHub 会话标头。
如果我在 Inspector 中使用 Javascript 提示符发出同样的请求,我可以看到 200 响应,并且我可以看到它正在发送我的会话 cookie。
我的理解是,在我的 manifest.json 中指定 Github 域意味着我的扩展程序可以访问我的内容脚本中的会话数据,这不正确吗?我应该怎么做才能对这个受保护的内容提出有效的请求?
【问题讨论】:
-
我也有这个问题,即使使用
credentials: 'same-origin',fetch 也不会发送 cookie,而 XHR 只是发送所有内容,对我来说似乎是一个错误。
标签: google-chrome-extension xmlhttprequest cors csrf fetch-api