content-security-policy - 本地资源的内容安全策略
问题描述
我正在尝试使用 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)。我究竟做错了什么 ?
谢谢
解决方案
可能是2个问题:
该
'self'
令牌在 Safari 中不包括localhost:8080
(带有端口号)。但是在这种情况下,您应该另外阻止 2 个 CSS,而不仅仅是 js。
要修复只需添加localhost:8080
到default-src
指令。您的 Apache Tomcat 服务器通过 HTTP 标头发布默认 CSP。在这种情况下,您无法使用元标记缓解 CSP,并且必须修改 CSP 响应 HTTP 标头。
检查您是否发布了 CSP HTTP 标头,教程在这里。
是否仅在 Safari 浏览器中观察到此错误?Chrome/Firefox 呢?
推荐阅读
- highcharts - Highcharts Tooltip 无法正确显示 utf-8
- html - Bootstrap 4 导航栏不会在平板电脑上折叠
- node.js - 带有 NextJS 的 ASP.NET Core 项目
- r - 如何根据一年中的某一天 (DOY) 对多列进行 R 中的每日总和?
- javascript - 不同的活动
- google-bigquery - 如何在 BIGQUERY 中实现 GETBIT 功能
- python - 在列表列表中找到特定列表的次数
- python - Pyspark:根据条件在列的所有值中添加零作为前缀
- javascript - 我的 React App 功能无法在手机上运行
- java - 查询以搜索患者