【问题标题】:AWS CloudFront Signed Cookies CORS IssueAWS CloudFront 签名 Cookie CORS 问题
【发布时间】:2019-04-24 18:22:28
【问题描述】:

我在执行云端签名的 cookie 时遇到以下错误

从源访问“https://a.xyz.com/test.html”处的 XMLHttpRequest 'https://b.xyz.com' 已被 CORS 策略阻止:否 请求中存在“Access-Control-Allow-Origin”标头 资源。

我正在从 b.xyz.com(域 2)访问 a.xyz.com(域 1)的文件。 在限制查看者访问(使用签名 cookie)以进行云前端(域 1)分发之前,这工作正常。

我对具有域 1 资产的存储桶的 S3 CORS 配置是

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

我已尝试在云端行为设置中设置以下白名单标头

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

但我仍然收到上述错误。

注意:如果我在新选项卡中打开文件 https://a.xyz.com/test.html,它工作正常,即已成功创建签名 cookie。

我该如何解决这个问题?

【问题讨论】:

    标签: javascript ajax amazon-web-services amazon-s3 cors


    【解决方案1】:

    要使 CORS 与 cookie 一起使用,您需要使用 Access-Control-Allow-Credentials

    https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials

    另外Access-Control-Allow-Origin 不能是*,XHR 需要用withCredentials 触发

    https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials

    【讨论】:

      猜你喜欢
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 2015-09-20
      • 2018-05-22
      • 2020-02-20
      • 2020-01-13
      • 2017-04-02
      相关资源
      最近更新 更多