首页 > 解决方案 > 为什么我的 CSP 标头中间件不起作用?

问题描述

我编写了一个简单的中间件函数来将 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”脚本有关?正在加载/显示在控制台上。

标签: clojurehttp-headersring

解决方案


您的中间件似乎正在工作(添加 CSP 标头),但您没有正确的 csp 标头值。尝试添加img-src 'self',看看是否有帮助。

顺便提一句。您可以尝试Content-Security-Policy-Report-Only直到调整 CSP 标头。


推荐阅读