慕课上看了ajax跨域请求的课程,这里记录一下使用ngnix反向代理解决跨域问题
调用端port:8080
被调用端port:8081
配置本机hosts文件
127.0.0.1 b.com
127.0.0.1 a.com
在ngnix的conf目录下创建vhost文件夹
在ngnix.conf文件中添加 include vhost/*.conf;
意思是加載vhost中的所有.conf文件
在vhost中创建b.com.conf文件
server{
listen 80;
server_name b.com;
location /{
proxy_pass http://localhost:8080/;
}
}
这里是说监听80端口,请求都是从80端口发出的,把b.com的请求都映射到http://localhost:8080/
然后创建a.com.conf文件
server{
listen 80;
server_name a.com;
location /{
proxy_pass http://localhost:8081/;
}
location /ajaxserver{
proxy_pass http://localhost:8080/get/test;
}
}
把a.com中 /ajaxserver的请求都映射到 http://localhost:8080/get/test
在ngnix所在目录打开cmd窗口执行 .\nginx.exe -t
如果显示successful就成功了,启动ngnix
在8080端口所在的服务发起ajax请求
function fun(){
$.ajax({
type: “GET”,
url: “/ajaxserver”,
dataType: “json”,
success: function (data) {
alert(data);
}
});
}
url的值和a.com.conf中的location /ajaxserver一样
这样就解决跨域请求了。
跨域请求产生的原因是不在同一域名同一端口
ngnix的反向代理刚好能很好解决这个问题;