我正在尝试制作一个 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。
我的理解是,在 my 中指定 Github 域manifest.json
意味着我的扩展程序可以访问我的内容脚本中的会话数据,这不正确吗?我应该怎么做才能对这个受保护的内容提出有效的请求?