Magento 如何将CORS(跨源策略)添加到NGINX中的所有域?

Magento 如何将CORS(跨源策略)添加到NGINX中的所有域?,magento,nginx,cors,jsonp,font-face,Magento,Nginx,Cors,Jsonp,Font Face,我已经创建了一个用于提供静态文件(CSS、图像、字体和JS等)的文件夹,我最终会将该文件夹命名为子域,以便在CDN上使用,以使用我的Magento 2设置 我想允许所有域都通过CORS-跨源策略进行访问,我也想缓存数据。这就是我所拥有的。(我不是在询问关于JSONP问题的安全建议或提示-我希望全局访问文件目录) 根据它的说法,X-Frame-Options支持ALLOW-FROM uri,但看不到使用*(所有域)或在此ALLOW-FROM中添加某些多个域的示例。我需要允许所有域访问我的静态文件文

我已经创建了一个用于提供静态文件(CSS、图像、字体和JS等)的文件夹,我最终会将该文件夹命名为子域,以便在CDN上使用,以使用我的Magento 2设置

我想允许所有域都通过CORS-跨源策略进行访问,我也想缓存数据。这就是我所拥有的。(我不是在询问关于JSONP问题的安全建议或提示-我希望全局访问文件目录)


根据它的说法,
X-Frame-Options
支持
ALLOW-FROM uri
,但看不到使用
*
(所有域)或在此
ALLOW-FROM
中添加某些多个域的示例。我需要允许所有域访问我的静态文件文件夹。

我没有在nginx中尝试,但允许当前请求的来源在tomcat中起作用:

add_header X-Frame-Options "ALLOW-FROM $http_origin";

默认情况下,允许所有域嵌入资源(例如,在
iframe
等中),因此不需要额外的头


X-Frame-Options
HTTP响应头的唯一目的是防止交互资源被外部站点嵌入到
iframe
中,因此,如果您的意图是
ALLOW-from*
(如上所述,这确实不是一个有效的指令),然后,您应该完全省略整个标题,任何人都可以随心所欲地从任何域完全正确地访问您的静态资源。

假设您确实想要CORS(跨源请求共享),而不仅仅是嵌入到iframe中,配置将是:

location /cdn-directory/ {

    location ~* \.(js|css|swf|eot|ttf|otf|woff|woff2)$ {
        add_header Cache-Control "public";
        add_header Access-Control-Allow-Origin: *
        expires +1y;
    }

}

这可能有些过分,但我在针对CORS的Magento 1.8.x安装中使用了以下标题:

add_header 'Access-Control-Allow-Origin' "*";
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' 'User-Agent,Keep-Alive,Content-Type';

您的配置是正确的,它将头添加到定义的请求中(我测试过),我不确定您在这里问什么:如何在nginx中全局定义响应头?X-Frame-Options的使用情况?请记住,Google Chrome和Safari不支持X-Frame-Options
ALLOW FROM
,可能没有太多示例,因为正因为如此,您是否尝试过使用
内容安全策略:Frame Founders*
?我相信CSP头文件取代了X-Frame-Options,因此可能是一个很好的补充。我想知道我是否可以让多个域使用我的内容,因为ALLOW-FROM uri似乎只限于一个调用。这个片段,特别是与OP中的其他配置一起,只会导致缓存中毒。更不用说
Origin
头可能会丢失,即使存在,
ALLOW-FROM
也不应该包含地址方案(例如,它永远不应该从
http://
之类的东西开始)。我不希望赏金授予你。我怎样才能删除这个?+谢谢你的建议,这看起来很吸引人,可以尝试一下。
location /cdn-directory/ {

location ~* \.(js|css|swf|eot|ttf|otf|woff|woff2)$ {
    add_header 'Cache-Control' 'public';
    add_header 'X-Frame-Options' 'ALLOW-FROM *';
    add_header 'Access-Control-Allow-Origin' '*';
    add_header 'Access-Control-Allow-Credentials' 'true';
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
    expires +1y;
  } 
}
add_header 'Access-Control-Allow-Origin' "*";
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' 'User-Agent,Keep-Alive,Content-Type';