在仅Content-Security-Policy-Report-“ report-uri” POST调用中添加新的Http标头

问题描述

我们已通过“ report-uri”指令启用了“ Content-Security-Policy-Report-Only”响应标头,以报告所有违规行为。

        <param-name>Content-Security-Policy-Report-Only</param-name>
        <param-value>default-src 'none'; connect-src 'self' api.amplitude.com; font-src 'self';
            img-src 'self' script-src 'self' 'unsafe-eval'
            'unsafe-inline';style-src 'self' 'unsafe-inline';manifest-src
            'self';frame-ancestors 'none'; frame-src 'self';
            report-uri /myApp/api/v1/csp/report;</param-value>

只要网页加载策略中有违规行为,浏览器就会自动对我们注册的端点“ / myApp / api / v1 / csp / report”进行POST调用,并发送带有违规行为的JSON请求。

但是此呼叫失败并显示403-禁止

我们的应用程序还期望所有POST / PUT Http调用的请求标头中都包含CSRF令牌。 由于此API调用是从浏览器自动进行的,因此它不会发送我们的应用程序期望的CSRF令牌,因此会失败。 如何将新的HTTP标头添加到由浏览器自动进行的此调用中?

谢谢。

解决方法

你不能。

您需要为CSP错误设置终结点,因此不需要CSRF令牌。

这不应该是一个严重的问题:您提供的错误报告API不应执行真正需要CSRF保护的任何操作(例如使用用户的身份公开个人数据或向公众发布内容)