解决AWS S3与Cloudfront返回的奇怪响应头导致CORS问题的方法是通过配置AWS S3桶或Cloudfront分发的响应头,确保正确设置CORS规则。
以下是一个示例解决方法的代码:
aws s3api put-bucket-cors --bucket YOUR_BUCKET_NAME --cors-configuration '{
"CORSRules": [
{
"AllowedOrigins": ["*"],
"AllowedMethods": ["GET", "PUT", "POST", "DELETE"],
"AllowedHeaders": ["*"],
"ExposeHeaders": []
}
]
}'
确保将YOUR_BUCKET_NAME替换为您的S3桶名称。此示例允许从任何来源(AllowedOrigins)进行GET、PUT、POST和DELETE请求(AllowedMethods),允许任何请求头(AllowedHeaders),并不公开任何额外的响应头(ExposeHeaders)。
登录AWS控制台,导航到Cloudfront分发的配置页面,找到“Behaviors”选项卡,然后点击“Create Behavior”创建一个新的行为。
在新创建的行为中,找到“Cache Based on Selected Request Headers”部分,点击“Add Header”按钮,添加一个自定义请求头“Origin”。
然后,继续找到“Default TTL”, “Minimum TTL”和“Maximum TTL”部分,将这些值设置为适当的缓存时间。
点击“Create”保存并生效更改。
这样,S3桶和Cloudfront分发都已正确配置CORS规则,以允许跨域请求。
请注意,这只是一个示例解决方法,根据您的具体需求和架构可能需要进行调整。您可以根据需要添加或修改CORS规则。