首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django管理资源策略COEP ERR_BLOCKED_BY_RESPONSE

Django管理资源策略COEP ERR_BLOCKED_BY_RESPONSE
EN

Stack Overflow用户
提问于 2022-06-23 07:22:06
回答 1查看 111关注 0票数 0

我的Django管理站点的静态文件位于S3桶(实际上是DigitalOcean空间)上,在控制台中我得到了一个DigitalOcean 200

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

对其中任何一个文件的响应包含一个未设置的跨源资源策略错误,该错误如下:

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

我试过的是:

  • 在错误消息之后,我尝试在ressource上设置一个响应头,类似于Cross-Origin-Resource-Policy: cross-origin。但是在DigitalOcean空间中,除了Content-TypeCache-ControlContent-EncodingContent-Disposition和自定义x-amz-meta-头之外,我不能设置标题。
  • 我尝试扩展Django admin/base.html模板,复制几个link标记,并手动为它们设置一个crossorigin属性。通过这种方式查询两次资源,一个查询像以前一样被阻塞,另一个查询正在工作。头的唯一区别是设置了Origin。有办法告诉Django向Django管理模板的所有crossorigin link script 以及 img 标记添加属性吗?E 236
  • 我试图删除入口负载平衡器上的Cross-Origin-Opener-PolicyCross-Origin-Embeder-Policy头,我猜这是阻塞的原因,方法是将它们设置为unsafe-none。尽管我认为它应该与政策相配合,但这一变化对我不理解的问题没有任何影响。

我没有尝试的是:

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

我的解决办法:

  • 丑陋的做法是复制所有 Django管理模板,并在需要时手动添加crossorigin属性。

我不知道这是从哪里来的,几周前一切都很好。任何帮助都很感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-28 08:02:08

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

这解决了问题。

感谢djangoproject的亚当约翰逊。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72726092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档