为什么CloudFront没有为S3提供的svg转发我的内容类型头?
我试图从CloudFront加载一个页面,svg显示为丢失的图像 当我查看响应头时,我发现当我直接加载S3 bucket时,响应包含正确的内容类型:image/svg+xml为什么CloudFront没有为S3提供的svg转发我的内容类型头?,svg,amazon-s3,amazon-cloudfront,Svg,Amazon S3,Amazon Cloudfront,我试图从CloudFront加载一个页面,svg显示为丢失的图像 当我查看响应头时,我发现当我直接加载S3 bucket时,响应包含正确的内容类型:image/svg+xml $ curl -I https://s3-eu-west-1.amazonaws.com/pages.ivizone.com/1/19/1509969889/images/kenzo-logo-v2.svg HTTP/1.1 200 OK x-amz-id-2: k3+bRpJLp+avBaUWO4VSgB+Djxb+ne
$ curl -I https://s3-eu-west-1.amazonaws.com/pages.ivizone.com/1/19/1509969889/images/kenzo-logo-v2.svg
HTTP/1.1 200 OK
x-amz-id-2: k3+bRpJLp+avBaUWO4VSgB+Djxb+nebnGJs3u6kQ0rMeX95h3XeLHA03XYaWioat+JqNG6x61x8=
x-amz-request-id: 43D8ED0E9EB4490C
Date: Mon, 06 Nov 2017 15:06:13 GMT
Last-Modified: Mon, 06 Nov 2017 14:08:00 GMT
ETag: "4b8f9e399ec9bc166040a2641cf33fb3"
Accept-Ranges: bytes
Content-Type: image/svg+xml
Content-Length: 9484
Server: AmazonS3
但是,当我通过CloudFront时,标题缺失:
$ curl -I https://pages.ivizone.com/1/19/1509969889/images/kenzo-logo-v2.svg
HTTP/1.1 200 OK
Content-Length: 9484
Connection: keep-alive
Date: Mon, 06 Nov 2017 14:01:01 GMT
Last-Modified: Mon, 06 Nov 2017 12:04:52 GMT
ETag: "4b8f9e399ec9bc166040a2641cf33fb3"
Server: AmazonS3
X-Cache: RefreshHit from cloudfront
Via: 1.1 ed9babcd75a95b818a6df1694ba95225.cloudfront.net (CloudFront)
X-Amz-Cf-Id: va4AIkAzw7-tNZ-qQo4KA_czM29tFQAzmNH_P0wjYd_TiboSBAyohA==
因此,这会导致渲染图像时出现问题
有人知道为什么Cloudfront会剥离头部,以及如何修复它吗
谢谢 好吧,看来我在什么地方搞砸了。将svg图像上载到S3时,我必须将内容类型字符串添加到S3对象元数据中:
"image/svg+xml"
(无空格)
一旦我在上传时添加了这个,图像就可以正常使用了
默认情况下,S3不发送内容类型标题,因此我的浏览器可能以不正确的格式解释svg。通过指定头,它知道如何处理它