Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么CloudFront没有为S3提供的svg转发我的内容类型头?_Svg_Amazon S3_Amazon Cloudfront - Fatal编程技术网

为什么CloudFront没有为S3提供的svg转发我的内容类型头?

为什么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

我试图从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+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。通过指定头,它知道如何处理它