问题描述
我编写了一个简单的中间件函数来将 Content-Security-Policy 标头添加到我的 API 路由中,我尝试使用多个策略(default-src、img-src、frame-ancestors)指向任一“self” ' 或明确指定为“http://localhost:port”,但这些似乎都不起作用。
这是我的简单中间件:
(defn wrap-content-type-security
[handler]
(fn [req]
(let [resp (handler req)]
(header resp "Content-Security-Policy" "default-src 'self'"))))
但是,我仍然遇到常见的 favicon.ico 路由错误,我确实有一个 /favicon.ico 的虚拟路由,只是返回一些文本,这也会返回 CSP 标头。
显然我遗漏了什么/做错了什么,感谢您的帮助。
谢谢。
编辑:仔细研究一下,这似乎是与 Firefox 相关的问题?我试图在 Chrome 中复制这个问题,并且一切似乎都运行良好,因为 favicon 确实显示在浏览器选项卡中。
但是在 Firefox 中,仍然显示相同的问题:
这让我觉得它与“FaviconLoader.jsm”脚本有关吗?正在加载/显示在控制台上。
解决方法
您的中间件似乎正在工作(添加 CSP 标头),但您没有正确的 csp 标头值。
尝试添加 img-src 'self'
,看看是否有帮助。
顺便说一句。您可以尝试 Content-Security-Policy-Report-Only
,直到您调整 CSP 标头。