Google chrome extension 在Chrome扩展中使用时,获取API不发送会话cookie

Google chrome extension 在Chrome扩展中使用时,获取API不发送会话cookie,google-chrome-extension,xmlhttprequest,cors,csrf,fetch-api,Google Chrome Extension,Xmlhttprequest,Cors,Csrf,Fetch Api,我正在尝试制作一个Chrome扩展,它使用FetchAPI从Github上的Pull请求中获取一些细节,然后在别处显示它们。当我尝试在Github上的非公共存储库中使用它时,遇到了一些问题。我相信这与CSRF保护以及控制Chrome扩展访问会话cookie的规则有关 我的扩展名的manifest.json中有以下内容: "content_scripts": [{ "matches": [ "*://github.com/*/*/pulls" ], "js"

我正在尝试制作一个Chrome扩展,它使用FetchAPI从Github上的Pull请求中获取一些细节,然后在别处显示它们。当我尝试在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"
]
但是当我在
脚本/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域意味着我的扩展可以在我的内容脚本中访问我的会话数据,这不正确吗?我应该怎么做才能对此受保护的内容发出有效的请求?

在权限中指定github只允许访问主机,如果扩展/应用程序受到恶意软件()的危害,它可以限制损坏


中没有指出会话数据可以在内容脚本中检索,而只能在其DOM中检索。我认为如果您在创建的chrome扩展项目中使用并合并官方Github API会更好。

根据,要包含cookie,您需要
凭据:“include”
而不是
凭据:“同源”

我也有这个问题,fetch根本不发送Cookie,即使使用
凭据:“同源”
,而XHR只是发送所有内容,对我来说似乎是一个bug。虽然使用
凭据:“包含”
确实是正确的解决方案,但您引用的博客帖子绝不支持您;它甚至没有提到Chrome扩展或
凭证:“同源”
(这是
fetch()
调用的
init
参数中的有效选项,但在Chrome扩展的上下文中不起作用)。您需要
凭证的真正原因是:'include'
是Chrome扩展在一个概念窗口中执行,该窗口的URL位于
Chrome扩展://
方案中,因此,与您可能要向其发出获取请求的任何真实域肯定不在同一来源。即使设置了
凭据:“include”
,我仍然无法发送cookie。我已经读了很多这样的问题,但不幸的是,我在使用Chrome扩展时也遇到了同样的问题。它使用相同的Firefox扩展,因此我相当确信所有CORS头都设置正确@PythonEnthusiast,你找到解决办法了吗?