【问题标题】:Content security policy. webcomponent. script src DataURI .Can I override HTTP HEADER by META tag?内容安全策略。网页组件。 script src DataURI 。我可以通过 META 标签覆盖 HTTP HEADER 吗?
【发布时间】:2017-02-03 04:57:03
【问题描述】:

我正在为 Shopify CMS 开发一个插件。这个插件使用 webcomponents.js 通过

加载 Polymer 脚本
script.src = "data:text/javascript;charset=utf-8," + encodeURIComponent(scriptContent);

webcomponentsjs/src/HTMLImports/parser.js line 307

在 FireFox 中出现以下错误:

Content Security Policy: The page’s settings blocked the loading of a resource at data:text/javascript;charset=utf-8,/**script code*/(“script-src https://domainurl https://* 'unsafe-inline' 'unsafe-eval'”)

原始内容安全策略标头(我无法在服务器上更改此标头,因为 Shopify 是托管平台,我对其没有任何控制权)

Content-Security-Policy:
default-src 'self' https://*;
child-src 'self' https://* blob: data:; 
connect-src 'self' https://* wss://*;
font-src 'self' https://* blob: data:;
img-src 'self' https://* blob: data:; 
media-src'self' https://* blob: data:;
object-src 'self' https://* blob: data:;
script-src 'self' https://* 'unsafe-inline' 'unsafe-eval';
style-src 'self' https://* 'unsafe-inline';

我正在尝试通过元标记重载此标头

  <meta http-equiv="Content-Security-Policy" content="
    default-src * data: 'unsafe-inline' 'unsafe-eval'; 
    script-src * data: 'unsafe-inline' 'unsafe-eval'; 
" />

是否可以通过元标记重载标头值?

【问题讨论】:

  • 你试过了吗?
  • 不,多个 CSP 总是组合在一起以获得更多限制。 w3.org/TR/CSP2/#enforcing-multiple-policies
  • 是的。但我认为我做错了什么。是否可以重载标头值?我在一个页面上找不到任何关于 http 标头和元标记行为的信息。
  • 查看更多上下文代码会很有用,特别是script.src = "data:text/javascript;charset=utf-8," + encodeURIComponent(scriptContent); 所在的整个块。也许有更好的方法来导入代码,也许您只需将所有脚本放在另一个 .js 文件中并将其加载到脚本标签中,而不是直接在页面上运行 script.src 的东西
  • AllTheTime,我已经更新了帖子和附加链接:github.com/webcomponents/webcomponentsjs/blob/…

标签: javascript firefox shopify web-component content-security-policy


【解决方案1】:

我发现我无法管理内容安全策略。

我已修补 webcomponents.js 文件。我已删除 script.src = "data:text/javascript;charset=utf-8," + encodeURIComponent(scriptContent);。

现在我正在通过 script.textContent 加载脚本。

【讨论】:

  • “我发现我无法管理内容安全策略” – 好吧,如果可以的话,那会让 CSP 变得毫无用处……
  • 哈哈)))我不能同时管理CSP,客户端和服务器))))
猜你喜欢
  • 2019-05-19
  • 1970-01-01
  • 2016-03-24
  • 2021-06-28
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
  • 2015-04-12
  • 2017-03-14
相关资源
最近更新 更多