在 Chrome 扩展中使用时获取 API 不发送 session cookie
Fetch API not sending session cookies when used inside a Chrome Extension
我正在尝试制作一个 Chrome 扩展,它使用 Fetch API 从 Github 上的合并请求中抓取一些细节,然后将它们显示在其他地方。当我尝试将它与 Github 上的 non-public 存储库一起使用时,我 运行 遇到了一些问题。我认为这与 CSRF 保护以及管理 Chrome 扩展程序访问 session 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 session header 请求。
如果我在 Inspector 中使用 Javascript 提示发出完全相同的请求,我可以看到 200 响应,而且我可以看到它 正在 发送我的session 饼干。
我的理解是,在我的 manifest.json
中指定 Github 域意味着我的扩展可以访问我的内容脚本中的 session 数据,这不正确吗?我应该怎么做才能对此受保护内容发出有效请求?
在权限中指定 github 仅授予对主机的访问权限,如果 extension/app 被恶意软件 (source) 破坏,它可以限制损害。
content script documentation 中没有指出可以在内容脚本中检索会话数据,只能在它们的 DOM 中检索。我认为如果您在正在创建的 chrome 扩展项目中使用并合并官方 Github API 会更好。
根据 Chrome blog,要包含 cookie,您需要 credentials: 'include'
而不是 credentials: 'same-origin'
。
我正在尝试制作一个 Chrome 扩展,它使用 Fetch API 从 Github 上的合并请求中抓取一些细节,然后将它们显示在其他地方。当我尝试将它与 Github 上的 non-public 存储库一起使用时,我 运行 遇到了一些问题。我认为这与 CSRF 保护以及管理 Chrome 扩展程序访问 session 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 session header 请求。
如果我在 Inspector 中使用 Javascript 提示发出完全相同的请求,我可以看到 200 响应,而且我可以看到它 正在 发送我的session 饼干。
我的理解是,在我的 manifest.json
中指定 Github 域意味着我的扩展可以访问我的内容脚本中的 session 数据,这不正确吗?我应该怎么做才能对此受保护内容发出有效请求?
在权限中指定 github 仅授予对主机的访问权限,如果 extension/app 被恶意软件 (source) 破坏,它可以限制损害。
content script documentation 中没有指出可以在内容脚本中检索会话数据,只能在它们的 DOM 中检索。我认为如果您在正在创建的 chrome 扩展项目中使用并合并官方 Github API 会更好。
根据 Chrome blog,要包含 cookie,您需要 credentials: 'include'
而不是 credentials: 'same-origin'
。