CloudFront,S3和Apache的CORS配置问题

时间:2014-07-13 03:40:35

标签: css apache amazon-ec2 amazon-s3 amazon-cloudfront

我有一个tomcat Web应用程序,它使用CloudFront,Apache和S3进行静态内容交付。静态内容使用版本化文件夹结构,以实现零停机升级:

V1
    css
    images
    javascript
    fonts
V2
    css
    images
    javascript
    fonts
etc

对于除css文件之外的所有文件,这些文件会立即从应用程序引用到CDN。但是,支持现有的企业Web应用程序是必要的,因此不能更改现有的/ images和/ fonts引用。

为了解决这个问题,我在apache EC2上设置了一个自定义源,作为S3存储桶的反向代理。它使用css文件中的referer头将图像引用定向到正确的目录。

这种方法很好,除了firefox报告EC2上发生CORS违规的字体。这对我来说没有任何意义,因为所有内容都托管在S3本身上。

尽管如此,我在S3存储桶中设置了CORS配置,在Access中为Access-Allow-Control-Origin设置了一个Header,并且CloudFront传递了Origin头。 css文件很好,没有CORS违规,但不会提供字体。 Apache中是否存在我缺少的配置,还是其他的配置?我很感激能得到的任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

2014年6月26日,AWS在CloudFront中添加了对CORS的支持,您是否正在使用此支持?

此SO答案提供有关为特定分发启用它的信息: https://stackoverflow.com/a/24459590/3195497

如果未启用此功能,那么我的猜测是CloudFront已缓存没有Access-Allow-Control-Origin标头的响应,并且无论请求中发送了什么Origin,都会提供该响应。