否 'Access-Control-Allow-Origin' header 已签名的 cookie CloudFront 限制访问

No 'Access-Control-Allow-Origin' header for restricted access by signed cookies CloudFront

我有一个奇怪的问题。首先,我需要说明的是,我阅读了所有与CloudFront和S3的设置有关的关于这个问题的文章,这不是我的情况。

我通过签名的cookie配置了对存储桶中文件的访问,当我从浏览器发出请求时,文件立即打开,但是没有Access-Control-Allow-Origin 在响应中。 当我将签名的 cookie 更改为签名的 url 时,我开始在响应中得到这个 header,而没有更改任何其他 CORS 权限和设置。

我该如何修复这个奇怪的错误?你见过同样的行为吗?

我的设置和配置:

1) Cookies sets for ".mydomain.com", I make requests from "application.mydomain.com" to "cf.mydomain.com" (it's a mapped CNAME for cloudfront distribution)

2) S3 CORS settings 
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>http://application.mydomain.com</AllowedOrigin>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>HEAD</AllowedMethod>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedMethod>DELETE</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

Also I used instead of
     <AllowedOrigin>http://application.mydomain.com</AllowedOrigin> 
some other options as
     <AllowedOrigin>*</AllowedOrigin>
     <AllowedOrigin>http://*.mydomain.com</AllowedOrigin>
but without success.

3) Cloudfront settings

-Viewer Protocol Policy
HTTP and HTTPS

-Allowed HTTP Methods
GET, HEAD

-Cached HTTP Methods
GET, HEAD (Cached by default)

-Forward Headers
Whitelist

-Whitelist Headers
Access-Control-Request-Headers
Access-Control-Request-Method
Origin

-Forward Cookies
All

-Forward Query Strings
Yes

如果您使用 jquery 库,请不要忘记设置 xhrFields: {withCredentials: true}

它帮助了我。