为什么“内容安全策略”的自定义标头在 github 上不起作用?

拉胡尔

我正在尝试在 NodeJS 的帮助下提供 SVG 响应。这个 SVG 有一个小的内联 JavaScript 代码,可以动态计算 SVG 的宽度。当使用浏览器直接调用 API 时,一切正常。但是当我在 GitHub 的自述文件中使用这些 API(在自述文件中为 SVG 提供服务器)时,它不允许我运行这个存储在 SVG 中的内联 JavaScript 代码。

当添加任何 SVG 时,github 会生成一个链接,它看起来像 :: https://camo.githubusercontent.com/some-unique-id-for-each-content,当我直接在浏览器中打开此链接时,它会显示浏览器控制台中出现以下错误:

拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“default-src 'none'”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-”)或随机数(“nonce-...”)。还要注意 'script-src' 没有明确设置,所以 'default-src' 用作后备。

但问题是我在发送响应之前设置了自定义 Content-Security-Policy 标头,如下所示:

res.setHeader("Content-Type", "image/svg+xml");

res.setHeader("Content-Security-Policy", "default-src 'self'; img-src data:; style-src 'unsafe-inline'; script-src 'self' 'unsafe-inline'");

而且似乎自定义 script-src 不适用于 github 自述文件。我也尝试设置哈希值,但没有任何影响标题。

任何人都可以纠正我或告诉我这里有什么问题吗?

bk2204

GitHub 不允许用户在您查看 SVG 时执行自定义 JavaScript,因为他们设置了自己的Content-Security-Policy标头。这是因为一般来说,不受信任的 JavaScript 可以做恶意的事情,GitHub 不希望人们窃取凭据或成为恶意软件的载体。

在 GitHub 上呈现的所有用户提供的 SVG 都将受到此限制,因为 GitHub 上的所有图像都通过 Camo 代理以防止恶意 JavaScript 和跟踪,因此所有图像都与 GitHub 的Content-Security-Policy标头一起发送,而不是您标头。如果您想在 SVG 中运行 JavaScript,则只需在您自己的站点上完成。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我的散景图在github上不起作用?

为什么 jQuery 项目在 Github 页面上不起作用?

jekyll url在github上不起作用

叉和拉方法在GitHub上不起作用

Javascript文件在github页面上不起作用

Jekyll集合在github.pages上不起作用

平滑滚动在github页面上不起作用

Bootstrap / CSS在Github页面上不起作用

某些javascript函数在github页面上不起作用

Sonarqube 徽章在 github README 上不起作用

React 重定向在 Github 页面上不起作用

自定义“套用刷新”在iOS上不起作用

自定义字体在移动设备上不起作用

为什么排序方法在此自定义AbstractList实现上不起作用?

为什么自定义CSS类在React-Semantic-UI元素上不起作用?

PHP 标头在服务器上不起作用?

带有事件处理程序散列的内容安全策略在 iOS Safari 上不起作用

为什么Github页面之前的“ www”不起作用?

UITableView自定义单元在iPad Storyboard上不起作用,但在iPhone上起作用

为什么'ipconfig'在Windows 7上不起作用

为什么SETUID在Raspberry Pi上不起作用?

为什么模糊和聚焦在Safari上不起作用?

为什么WebHook的WebApi配置在POST上不起作用?

为什么Empty()在stdClass上不起作用

为什么FieldDoesNotExist在POST.get()上不起作用?

为什么 matplotlib 在 VSCode 上不起作用

为什么“加载事件在addEventListener()上不起作用”?

为什么push在此cookie数组上不起作用?

为什么.isascii()在Google colab上不起作用?