是否从 retina.js 启用 Nginx 上的跨源脚本来从另一个 URL 加载文件?

是否从 retina.js 启用 Nginx 上的跨源脚本来从另一个 URL 加载文件?

我正在运行视网膜图像插件以及 W3 Cache 以支持 CDN。W3 缓存将图像移动到 S3,但由于 URL 不同(从 h ttp://mysite.com 变为 h ttp://assets.mysite.com),JS 文件不会从那里提供文件

我发现一篇帖子说要启用此功能,只需将其添加到您的 .htaccess 中

# ----------------------------------------------------------------------
# CORS-enabled images (@crossorigin)
# ----------------------------------------------------------------------
# Send CORS headers if browsers request them; enabled by default for images.
# developer.mozilla.org/en/CORS_Enabled_Image
# blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html
# hacks.mozilla.org/2011/11/using-cors-to-load-webgl-textures-from-cross-domain-images/
# wiki.mozilla.org/Security/Reviews/crossoriginAttribute
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
# mod_headers, y u no match by Content-Type?!
<FilesMatch "\.(gif|png|jpe?g|svg|svgz|ico|webp)$">
SetEnvIf Origin ":" IS_CORS
Header set Access-Control-Allow-Origin "*" env=IS_CORS
</FilesMatch>
</IfModule>
</IfModule>

然后 JS 将能够从 S3 加载图像 - 但我不知道如何在 Nginx 上执行此操作。有人能给我一个简单的例子吗?

原始帖子的形式是 -http://wordpress.org/support/topic/doesnt-work-with-cdn-w3-total-cache?replies=4

答案1

您需要在 S3 存储桶上启用 CORS 规则,http://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html#how-do-i-enable-cors

对你来说必须有用的简单规则是:

<CORSConfiguration>
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
</CORSRule>
</CORSConfiguration>

答案2

看看这个要旨。您将需要根据您的域和缓存偏好对其进行一些调整。

相关内容