【问题标题】:Content Security Policy directive: “frame-ancestors” missing but there?内容安全策略指令:“框架祖先”缺失但存在吗?
【发布时间】:2018-09-25 19:34:15
【问题描述】:

我正在开发一个 nodejs 电子应用程序,在我的 index.html 中,我有一个看起来像这样的“Content-Security-Policy”

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Security-Policy"
      content="
      default-src     'self' https://*.mydomain.tld;
      script-src      'self' https://*.mydomain.tld;
      style-src       'self' https://*.mydomain.tld;
      img-src         'self' https://*.mydomain.tld;
      font-src        'self' https://*.mydomain.tld;
      connect-src     'self' https://*.mydomain.tld;
      media-src       'self' https://*.mydomain.tld;
      object-src      'self' https://*.mydomain.tld;
      child-src       'self' https://*.mydomain.tld;
      frame-ancestors 'self' https://*.mydomain.tld;
      frame-src       'self' https://*.mydomain.tld;
      worker-src      'self' https://*.mydomain.tld;
      form-action     'self' https://*.mydomain.tld;
      block-all-mixed-content;
      ">

当我运行应用程序时,它运行良好,所有资产都加载得很好,但在控制台中我收到以下错误

通过元素传递的内容安全策略可能不会 包含 frame-ancestors 指令。 index.html: 4

我一直在尝试摆脱错误并寻找可能导致它的原因但找不到任何东西,对我来说一切似乎都是正确的但我仍然收到错误,我还认为错误可能是由服务器@https://*.mydomain.tld 所以我尝试了这个

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Security-Policy"
      content="
      default-src     'self';
      script-src      'self';
      style-src       'self';
      img-src         'self';
      font-src        'self';
      connect-src     'self';
      media-src       'self';
      object-src      'self';
      child-src       'self';
      frame-ancestors 'self';
      frame-src       'self';
      worker-src      'self';
      form-action     'self';
      block-all-mixed-content;
      ">

导致完全相同的错误,我可以完全忽略该错误,因为该应用程序确实可以正常工作,并且该错误似乎没有引起任何问题,但是如果有人知道可能是什么错误,我将不胜感激。

编辑:当我删除框架祖先时,标签看起来像这样

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Security-Policy"
      content="
      default-src     'self' https://*.mydomain.tld;
      script-src      'self' https://*.mydomain.tld;
      style-src       'self' https://*.mydomain.tld;
      img-src         'self' https://*.mydomain.tld;
      font-src        'self' https://*.mydomain.tld;
      connect-src     'self' https://*.mydomain.tld;
      media-src       'self' https://*.mydomain.tld;
      object-src      'self' https://*.mydomain.tld;
      child-src       'self' https://*.mydomain.tld;
      frame-src       'self' https://*.mydomain.tld;
      worker-src      'self' https://*.mydomain.tld;
      form-action     'self' https://*.mydomain.tld;
      block-all-mixed-content;
      ">

错误消失了,我不应该添加它吗?

【问题讨论】:

  • 是的,错误消息明确指出,通过 &lt;meta&gt; 元素传递的内容安全策略可能不包含 frame-ancestors 指令。 frame-ancestors 指令对元元素无效。请参阅developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…&lt;meta&gt; 元素不支持此指令。)和w3c.github.io/webappsec-csp/#meta-element注意:内部不支持 Content-Security-Policy-Report-Only 标头元元素。report-uri、frame-ancestors 和沙盒指令也不是。)
  • 所以如果你用 meta 指定 frame-ancestors,它不会导致任何失败——它只会导致浏览器报告问题中引用的错误消息。根据规范,它只是从策略中删除。请参阅html.spec.whatwg.org/multipage/…4. 从策略中删除所有出现的 report-uri、frame-ancestors 和沙盒指令。

标签: content-security-policy


【解决方案1】:

因为 meta 元素不支持此指令。 看https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors

仅在来自服务器的“响应”上。

【讨论】:

    猜你喜欢
    • 2021-10-31
    • 2018-06-05
    • 2019-05-09
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 2016-11-26
    相关资源
    最近更新 更多