我尝试制作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会话标头。
如果我使用检查器中的Javascript提示发出相同的请求,我可以看到200响应,我可以看到它 发送我的会话cookie。
我的理解是在我的manifest.json
中指定Github域意味着我的扩展可以在我的内容脚本中访问我的会话数据,这是不正确的?我应该怎么做才能对这个受保护的内容提出有效请求?
答案 0 :(得分:5)
根据Chrome blog,要包含Cookie,您需要credentials: 'include'
而不是credentials: 'same-origin'
。
答案 1 :(得分:-1)
在权限中指定github只能访问主机,如果扩展程序/应用程序受到恶意软件(source)的攻击,则可以限制主机。
在content script documentation中未指出会话数据可以在内容脚本中检索,只能在DOM中检索。我认为如果您在正在创建的chrome扩展项目中使用并合并官方Github API会更好。