无法将自定义标头添加到CloudFront发行版 – 使用s3作为后端

我们正在尝试将一些自定义标头放到我们的云端分布中,但是它并不像预期的那样工作。 以下是这种情况。

我们有一个名为“example-images”的s3桶,其中包含所有的静态内容,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> <ExposeHeader>Access-Control-Allow-Credentials</ExposeHeader> <AllowedHeader>*</AllowedHeader> </CORSRule> </CORSConfiguration> 

我们可以通过使用curl的输出示例来访问s3内容。

 x-amz-id-2: xxxxxxxxxxxx x-amz-request-id: xxxxxxxxxxxx Date: Wed, 05 Oct 2016 04:10:26 GMT Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET Access-Control-Expose-Headers: Access-Control-Allow-Credentials Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method Last-Modified: Mon, 26 Sep 2016 13:12:58 GMT ETag: "xxxxxxxxxxxxxx" Accept-Ranges: bytes Content-Type: image/png Content-Length: 1630 Server: AmazonS3 

然后,我们创build了一个用于提供这些内容的云端分布。

根据文档,我们有以下“默认原点”

  • 限制桶访问=否
  • Oringnal自定义标题一些自定义标题

    例如“Access-Control-Allow-Credentials = true”

在CF分配“行为”中,我们有以下设置。

  • 协议策略= http&https
  • 允许http方法= GET,HEAD,OPTIONS。
  • 转发头=白名单
  • 白名单标题=原点
  • 对象caching=使用原始caching标头

我们仍然无法使用CF分发url查看自定义标题。

 curl -sI -H "Origin: example.com" -H "Access-Control-Request-Method: GET" -H "Access-Control-Allow-Credentials: GET" HTTP/1.1 200 OK Content-Type: image/png Content-Length: 1630 Connection: keep-alive Date: Wed, 05 Oct 2016 04:03:20 GMT Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET Access-Control-Expose-Headers: Access-Control-Allow-Credentials Last-Modified: Mon, 26 Sep 2016 13:12:58 GMT ETag: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" Accept-Ranges: bytes Server: AmazonS3 Vary: Origin Age: 1231 X-Cache: Hit from cloudfront Via: 1.1 xxxxxxxx.cloudfront.net (CloudFront) X-Amz-Cf-Id: xxxxxxxxxxxxxxxxxxxxx 

你能帮我们确定我们在这里失踪了什么吗?