Chrome 扩展提取 API - 内容安全政策
Chrome extension fetch API - Content Security Policy
我的 chrome 扩展应该通过 HTTP 请求从第三方 API 获取一些远程资源。
const getBoards = callback => {
fetch("https://gloapi.gitkraken.com/v1/glo/boards", {
credentials: "include"
})
.then(response => { ... })
.catch(err => { ... });
};
不幸的是,它抛出以下错误:
Refused to connect to 'https://gloapi.gitkraken.com/v1/glo/boards' because it violates the following Content Security Policy directive: "default-src 'self'". Note that 'connect-src' was not explicitly set, so 'default-src' is used as a fallback.
经过一些研究,我发现 chrome 要求在清单权限和 CSP 字符串中包含 url。
"permissions": [ ..., "https://gloapi.gitkraken.com/" ],
"content_security_policy": "default-src 'self' gloapi.gitkraken.com; script-src 'self' 'sha256-[...]'; style-src * 'unsafe-inline'; img-src 'self' data:;"
但是这些更改并没有解决第一个错误,而是导致了另一个错误。
Ignored insecure CSP value "gloapi.gitkraken.com" in directive 'default-src'.
我的 CSP 格式是否错误,或者我应该做些什么才能使这个 GET HTTP 请求正常工作。
经过更多研究,我找到了解决方案。 GitKraken API 的 URL 应该在 connect-src
属性 中,而不是 default-src
。所以我的清单现在看起来像这样:
permissions: [ ..., "https://gloapi.gitkraken.com/" ],
"content_security_policy": "default-src 'self'; script-src 'self' 'sha256-[...]'; style-src * 'unsafe-inline'; img-src 'self' data:; connect-src https://gloapi.gitkraken.com/;"
更多信息:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/connect-src#Syntax
我的 chrome 扩展应该通过 HTTP 请求从第三方 API 获取一些远程资源。
const getBoards = callback => {
fetch("https://gloapi.gitkraken.com/v1/glo/boards", {
credentials: "include"
})
.then(response => { ... })
.catch(err => { ... });
};
不幸的是,它抛出以下错误:
Refused to connect to 'https://gloapi.gitkraken.com/v1/glo/boards' because it violates the following Content Security Policy directive: "default-src 'self'". Note that 'connect-src' was not explicitly set, so 'default-src' is used as a fallback.
经过一些研究,我发现 chrome 要求在清单权限和 CSP 字符串中包含 url。
"permissions": [ ..., "https://gloapi.gitkraken.com/" ],
"content_security_policy": "default-src 'self' gloapi.gitkraken.com; script-src 'self' 'sha256-[...]'; style-src * 'unsafe-inline'; img-src 'self' data:;"
但是这些更改并没有解决第一个错误,而是导致了另一个错误。
Ignored insecure CSP value "gloapi.gitkraken.com" in directive 'default-src'.
我的 CSP 格式是否错误,或者我应该做些什么才能使这个 GET HTTP 请求正常工作。
经过更多研究,我找到了解决方案。 GitKraken API 的 URL 应该在 connect-src
属性 中,而不是 default-src
。所以我的清单现在看起来像这样:
permissions: [ ..., "https://gloapi.gitkraken.com/" ],
"content_security_policy": "default-src 'self'; script-src 'self' 'sha256-[...]'; style-src * 'unsafe-inline'; img-src 'self' data:; connect-src https://gloapi.gitkraken.com/;"
更多信息:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/connect-src#Syntax