Django admin资源策略COEP ERR_BLOCKED_BY_RESPONSE



我的Django管理网站的静态文件是在S3桶(DigitalOcean空间实际上),并在控制台中我得到一个ERR_BLOCKED_BY_RESPONSE。NotSameOriginAfterDefaultedToSameOriginByCoep 200

在网络面板中,所有的静态文件都被认为是第三方的,并且因为这个原因(不是相同的来源)而被阻止

对这些文件中的任何一个的响应都包含一个not setcross-origin-resource-policy错误,该错误表示:

要使用来自不同源的资源,服务器需要在响应头中指定跨源资源策略。

What I tried:

  • 在错误消息之后,我试图在资源上设置响应头,如Cross-Origin-Resource-Policy: cross-origin。但是在DigitalOcean空间中,我不能设置除Content-Type,Cache-Control,Content-Encoding,Content-Disposition和自定义x-amz-meta-头之外的头。
  • 我尝试扩展Djangoadmin/base.html模板,复制一些link标签并手动设置crossorigin属性给它们。通过这种方式,资源被查询两次,一个查询像以前一样被阻塞,而另一个正在工作。头文件中唯一的区别是设置了Origin是否有一种方法告诉Django在Django管理模板的所有linkscriptimg标签上添加crossorigin属性?
  • 我试图删除入口负载均衡器上的Cross-Origin-Opener-PolicyCross-Origin-Embeder-Policy头,我猜这会导致阻塞,通过将它们设置为unsafe-none。尽管我认为它应该与政策一致,但这一变化对我不理解的问题没有影响。

我没有尝试:

  • 我发现这个教程解释了如何在S3响应上设置自定义标头。这个想法是在前面有一个Lambda函数,将x-amz-头修改为标准头。我不确定我可以很容易地用DigitalOcean Functions复制这个。

我的解决方案:

  • 丑陋的hack是复制所有在需要的地方手动添加一个crossorigin属性。

我不知道这是从哪里来的,几个星期前一切都很好。谢谢你的帮助。

使用HTTP 2+,可以更有效地提供来自同一域的资产,因为它们可以在单个连接上提供服务。大多数网站都应该这样做。白噪声是一种流行的解决方案,只需最少的配置:https://whitenoise.evans.io/en/stable/

这就解决了问题。

Thanks to Adam Johnson from djangoproject.

相关内容

  • 没有找到相关文章

最新更新