首页 > 解决方案 > 本地资源的内容安全策略

问题描述

我正在尝试使用 apache tomcat 作为容器在我的本地部署一个 Web 应用程序。我有一个简单的页面,头部有以下内容:

<meta http-equiv="Content-Security-Policy" content="default-src 'self'">

<link rel="stylesheet" href="pure-min.css">
<link rel="stylesheet" href="styles.css">
<script src="app.js"></script>

当我尝试在 safari 14 上打开页面时出现错误

Refused to load http://localhost:8080/webapp/app.js because it does not appear in the script-src directive of the Content Security Policy.

我在这里阅读了文档,看起来“self”足以加载我自己的资源(对于 css 和 javascript)。我究竟做错了什么 ?

谢谢

标签: content-security-policy

解决方案


可能是2个问题:

  1. 'self'令牌在 Safari 中不包括localhost:8080(带有端口号)。但是在这种情况下,您应该另外阻止 2 个 CSS,而不仅仅是 js。
    要修复只需添加localhost:8080default-src指令。

  2. 您的 Apache Tomcat 服务器通过 HTTP 标头发布默认 CSP。在这种情况下,您无法使用元标记缓解 CSP,并且必须修改 CSP 响应 HTTP 标头。
    检查您是否发布了 CSP HTTP 标头,教程在这里

是否仅在 Safari 浏览器中观察到此错误?Chrome/Firefox 呢?


推荐阅读