AJAX跨域轻松配置nginx允许多个域名跨域访问

来源:互联网 发布:c语言双向冒泡排序算法 编辑:程序博客网 时间:2024/06/04 19:53
极客时间 2017-11-24 19:13:43

AJAX跨域轻松配置nginx允许多个域名跨域访问

什么是跨域

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。所谓同源是指,域名,协议,端口相同。浏览器执行javascript脚本时,会检查这个脚本属于那个页面,如果不是同源页面,就不会被执行。同源策略的目的,是防止黑客做一些做奸犯科的勾当。比如说,如果一个银行的一个应用允许用户上传网页,如果没有同源策略,黑客可以编写一个登陆表单提交到自己的服务器上,得到一个看上去相当高大上的页面。黑客把这个页面通过邮件等发给用户,用户误认为这是某银行的主网页进行登陆,就会泄露自己的用户数据。而因为浏览器的同源策略,黑客无法收到表单数据。

我们在开发的过程很容易遇到跨域的问题,下面用nginx 配置解决nginx 多域名跨域的问题

当浏览器发起Ajax请求到其他域名时,会出现跨域的问题,在nginx上的解决方案是配置Access-Control-Allow-Origin来解决,但是当我们需要允许多个域名跨域访问时却不好配置,可以用map来实现

map $http_origin $other_domain {  
default 0; 
"~http://1.nbwiki.com" http://1.nbwiki.com; 
"~http://2.nbwiki.com" http://2.nbwiki.com; 
"~http://3.nbwiki.com http://3.nbwiki.com; 
}
server{
listen 80;
server_name www.nbwiki.com;
root /nginx;
location /{
concat on;
concat_max_files 20;
add_header Cache-Control 
"public, max-age=3600";
}
location ~* .(ttf|ttc|otf|eot|woff|font.css)
$ {add_header Access-Control-Allow-Origin $other_domain;}
}

上面讲的是如何实现多个域名跨域,如果需要允许所有域名跨域的看直接写 * 星号就好了

add_header Access-Control-Allow-Origin *;
原创粉丝点击