用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 是一个定位规则。

(c)2006-2024 SYSTEM All Rights Reserved IT常识