我的Django管理站点的静态文件位于S3桶(实际上是DigitalOcean空间)上,在控制台中我得到了一个DigitalOcean 200
在网络面板中,所有静态文件都被认为是第三方文件,并因此而被阻塞(不相同的来源)。
对其中任何一个文件的响应包含一个未设置的跨源资源策略错误,该错误如下:
若要从不同来源使用此资源,服务器需要在响应头中指定跨源资源策略。
我试过的是:
Cross-Origin-Resource-Policy: cross-origin。但是在DigitalOcean空间中,除了Content-Type、Cache-Control、Content-Encoding、Content-Disposition和自定义x-amz-meta-头之外,我不能设置标题。link标记,并手动为它们设置一个crossorigin属性。通过这种方式查询两次资源,一个查询像以前一样被阻塞,另一个查询正在工作。头的唯一区别是设置了Origin。有办法告诉Django向Django管理模板的所有crossorigin link 和 script 以及 img 标记添加属性吗?E 236Cross-Origin-Opener-Policy和Cross-Origin-Embeder-Policy头,我猜这是阻塞的原因,方法是将它们设置为unsafe-none。尽管我认为它应该与政策相配合,但这一变化对我不理解的问题没有任何影响。我没有尝试的是:
x-amz-头修改成一个标准的标头。不确定我是否可以很容易地用DigitalOcean函数复制这一点。我的解决办法:
crossorigin属性。我不知道这是从哪里来的,几周前一切都很好。任何帮助都很感激。
发布于 2022-06-28 08:02:08
使用HTTP 2+,可以更有效地服务来自同一域的资产,因为它们可以在单个连接上服务。大多数网站都应该这样做。Whitenoise是一种流行的解决方案,可以在配置最少的情况下做到这一点:https://whitenoise.evans.io/en/stable/
这解决了问题。
感谢djangoproject的亚当约翰逊。
https://stackoverflow.com/questions/72726092
复制相似问题