用nginx的反向代理机制解决前端跨域问题
Posted 前端初学者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用nginx的反向代理机制解决前端跨域问题相关的知识,希望对你有一定的参考价值。
1.什么是跨域以及产生原因
跨域情况如下:
url | 说明 | 是否跨域 |
http://www.cnblogs.com/a.js http://www.a.com/b.js |
不同域名 | 是 |
http://www.a.com/lab/a.js http://www.a.com/script/b.js |
同一域名下不同文件夹 | 否 |
http://www.a.com:8000/a.js http://www.a.com/b.js |
同一域名,不同端口 | 是 |
http://www.a.com/a.js https://www.a.com/b.js |
同一域名,不同协议 | 是 |
http://www.a.com/a.js http://70.32.92.74/b.js |
域名和域名对应ip | 是 |
http://www.a.com/a.js http://script.a.com/b.js |
主域相同,子域不同 | 是(cookie不可访问) |
http://www.a.com/a.js http://a.com/b.js |
同一域名,不同二级域名(同上) | 是 |
2.跨域的常见解决方法
目前来讲没有不依靠服务器端来跨域请求资源的技术
1.jsonp 需要目标服务器配合一个callback函数。
2.window.name+iframe 需要目标服务器响应window.name。
3.window.location.hash+iframe 同样需要目标服务器作处理。
4.html5的 postMessage+ifrme 这个也是需要目标服务器或者说是目标页面写一个postMessage,主要侧重于前端通讯。
5.CORS 需要服务器设置header :Access-Control-Allow-Origin。
6.nginx反向代理 这个方法一般很少有人提及,但是他可以不用目标服务器配合,不过需要你搭建一个中转nginx服务器,用于转发请求。
3.nginx反向代理解决跨域
关于nginx的一些基本配置和安装请看我的另一篇博客,下面直接讲解如何配置一个反向代理。
首先找到nginx.conf或者nginx.conf.default 或者是default里面的这部份
其中server代表启动的一个服务,location 是一个定位规则。
1
以上是关于用nginx的反向代理机制解决前端跨域问题的主要内容,如果未能解决你的问题,请参考以下文章 |