aar*_*nk6 9 amazon-cloudfront amazon-web-services cors
我有一个 CloudFront 发行版,其默认行为配置为允许任何 CORS 请求,包括预检请求。但是,OPTIONS 请求将失败并出现 HTTP 403 错误(详细信息如下),这不是我所期望的。
\n我正在使用 AWS 管理的CORS-With-Preflight策略,该策略应允许所有 CORS 请求,包括预检 (OPTIONS) 请求:
\n(我不确定为什么 \xe2\x80\x9cOrigin 请求策略\xe2\x80\x9d 区域以黄色突出显示。)
\n政策详情:
\n我已在行为中允许 OPTIONS 请求:
\n但是,当我发送选项请求时,CloudFront 将返回此错误:
\n$ curl --request OPTIONS --url https://d3qj3h7hjzomrd.cloudfront.net/ --header \'Origin: https://www.example.com\'\n\n<?xml version="1.0" encoding="UTF-8"?>\n<Error>\n <Code>AccessForbidden</Code>\n <Message>CORSResponse: This CORS request is not allowed. This is usually because the evalution of Origin, request method / Access-Control-Request-Method or Access-Control-Request-Headers are not whitelisted by the resource\'s CORS spec.</Message>\n <Method>OPTIONS</Method>\n <ResourceType>OBJECT</ResourceType>\n <RequestId>WH3SHHNDMJR03FWJ</RequestId>\n <HostId>4mr77QbpdUeaN/GZvaFiwX5urzZbo7VoW2IiG3Ziq1HikqcPoTZKZZRmibuNf4590YlCf46Wu6s=</HostId>\n</Error>\n
Run Code Online (Sandbox Code Playgroud)\n(我\xe2\x80\x99已经格式化了XML以获得更好的可读性。)
\n我需要更改什么才能允许 OPTIONS 请求?
\n小智 2
我遇到了完全相同的问题,并且我想我已经找到了这种行为的原因。您的 CloudFront 配置似乎完全没问题。
事实证明,OPTIONS
如果每个请求不包含Access-Control-Request-Method
标头,AWS 都会返回 403。根据这个MDN 文档,这是完全合法的行为:
此标头是必需的,因为预检请求始终是一个选项,并且不使用与实际请求相同的方法。
所以你只需要修改你的curl来包含这个头:
curl -v --request OPTIONS \
--url https://d3qj3h7hjzomrd.cloudfront.net \
--header 'Origin: https://www.example.com' \
--header 'Access-Control-Request-Method: GET'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4977 次 |
最近记录: |