nginx 配置 CORS 支持跨域访问

kevin.Zhu 发布于:2013-1-16 13:29 分类:Nginx  有 15 人浏览,获得评论 0 条  

http://bo-hai.iteye.com/blog/2154706



CSS代码设置了一些字体,如果跨域访问这些字体,就会加载失败。错误信息如下:

Js代码 复制代码 收藏代码

  1. 已阻止交叉源请求:同源策略不允许读取 http://XXXXXX.com/aimall/spm_modules/fontawesome/fonts/fontawesome-webfont.woff?v=4.2.0 上的远程资源。可以将资源移动到相同的域名上或者启用 CORS 来解决这个问题。  


解决方案是:在nginx的配置中进行配置,配置如下:

Js代码 复制代码 收藏代码

  1. location ~* \.(eot|ttf|woff)$ {  

  2.    add_header Access-Control-Allow-Origin *;  

  3. }  






###############################################################################


刚才碰到一个css加载字体跨域问题,记录一下啊。

站点的动态请求与静态文件请求是不同的域名的。站点的域名为 www.domain.com,而静态文件的域名为 st.domain.com。

问题:

页面中加载css文件:<link rel="stylesheet" href="http://st.domain.com/css/uniform.css" />

此css中调用了外部字体如下:


@font-face {
  font-family: 'FontAwesome';
  src: url('../font/fontawesome-webfont.eot');

}


浏览器报请求跨域的错误。


解决方案:

我们使用Access-Control-Allow-Origin:* 通过启用cors 来解决跨域问题。

具体步骤如下:

1.开启apache的mod_headers模块

LoadModule headers_module modules/mod_headers.so

2.在st.domain.com的主机配置中加入

Header set Access-Control-Allow-Origin http://www.domain.com

重启apache。