django - 尝试访问管理字体文件时,Django 在 AWS S3 中托管静态文件导致 CORS 错误
问题描述
我设置 Django 将所有静态文件存储在 S3 上,并使用“collectstatic”命令复制所有管理文件,当我访问管理站点时,CSS 和 JS 文件正确来自 S3 存储桶。例如:
https://bucket.s3.amazonaws.com/static/admin/css/base.css
https://bucket.s3.amazonaws.com/static/admin/js/vendor/jquery/jquery.js
但是当它尝试访问字体文件 .woff 时,我收到以下错误:
Access to font at 'https://bucket.s3.amazonaws.com/static/admin/fonts/Roboto-Light-webfont.woff' from origin 'http://localhost:8000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
奇怪的是,它让我可以访问除字体文件之外的所有文件:
解决方案
在 S3 Bucket Permissions > CORS 中配置以下内容修复了该问题。
[
{
"AllowedHeaders": [
"Authorization"
],
"AllowedMethods": [
"GET"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": [],
"MaxAgeSeconds": 3000
},
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"HEAD",
"GET",
"PUT",
"POST",
"DELETE"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": [
"ETag",
"x-amz-meta-custom-header"
]
}
]
推荐阅读
- java - 连接超时:连接。如果您使用 HTTP 代理,请在 IDE 或 Gradle 中配置代理设置
- node.js - Vue 开发服务器未在 docker 容器内启动
- mysql - MySQL,从 TableRow 创建表
- android - CalendarPickerView 在 Vivo 设备中返回空值
- dynamics-crm - Dynamics 365 Adaptive Card 中的提交按钮不会在 Teams 中呈现
- angular - Angular 组件测试注入通用服务
- c# - 复选框闪烁的C# WPF动画
- php - Laravel 计数功能
- java - 在流方法链接中添加 SubscribeOn 和 ObserveOn 后未触发
- java - 从 Spring Boot 的 Fat JAR 中读取目录