由于同源策略(Same origin policy)的影响,浏览器一般默认会禁止跨域访问。
同源既相同的协义(protocol)相同的主机(host)和相同的端口(port)。
**如何使用Nginx来允许跨域访问?**
做个模拟,先配置下host
> windows: C:\Windows\System32\drivers\etc\hosts
> linux: /etc/hosts
~~~
192.168.33.88 www.a.com
192.168.33.88 www.b.com
192.168.33.88 www.c.com
~~~
Nginx通过添加 Access-Control-Allow-Origin、Access-Control-Allow-Methods、Access-Control-Allow-Headers 等HTTP头信息的来实现访控制。
> "Access-Control-Allow-Origin" 设置允许发起跨域请求的网站
"Access-Control-Allow-Methods" 设置允许发起跨域请求请求的HTTP方法
"Access-Control-Allow-Headers" 设置允许跨域请求包含 Content-Type头
window下修改nginx.conf配置文件,修改如下:
~~~
# 配置网站www.a.com
server {
server_name www.a.com;
root /vagrant/a;
# 允许 http://www.b.com 使用 GET,POST,DELETE HTTP方法发起跨域请求
add_header Access-Control-Allow-Origin http://www.b.com;
add_header Access-Control-Allow-Method GET,POST,DELETE;
}
# 配置网站www.b.com
server {
server_name www.b.com;
root /vagrant/b;
}
# 配置网站www.c.com
server {
server_name www.c.com;
root /vagrant/c;
}
~~~