我有一个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中是否存在我缺少的配置,还是其他的配置?我很感激能得到的任何帮助。
由于
答案 0 :(得分:0)
2014年6月26日,AWS在CloudFront中添加了对CORS的支持,您是否正在使用此支持?
此SO答案提供有关为特定分发启用它的信息: https://stackoverflow.com/a/24459590/3195497
如果未启用此功能,那么我的猜测是CloudFront已缓存没有Access-Allow-Control-Origin标头的响应,并且无论请求中发送了什么Origin,都会提供该响应。