解决跨域的八种方式

1,096 阅读1分钟

为什么会出现跨域

规定只有域名,端口,协议全部相同,才叫做同源。

受制于同源策略,一个域去请求另一个域的资源时,就会出现跨域的现象,而在
我们开发中,经常需要跨域去请求资源(例如:本地localhost,去请求测试环境
的资源),所以我们也就需要一些方法去解决这个跨域的问题

一、使用jsonp 解决跨域

缺点:不安全,容易造成xss攻击;只能是GET请求
原理:
1.<script>标签的src属性不受同源策略的限制
2.跨域请求的接口返回的是一个函数调用,也就是调用我们应用中定义好的一个方法

接口返回的数据格式

二、通过cors解决跨域

原理:在服务器端设置允许跨域的请求头,从而实现跨域
      服务器设置后前端通过正常的ajax 请求即可

三、通过postMessage()实现不同源的两个页面间的通信

原理:1.postMessage()能在两个页面间通信
      2.利用iframe

四、通过window.name 实现跨域

原理:
    1.name在不同页面加载后仍旧存在,配合iframe

五、通过路径的hash来实现页面间的跨域(通信)

    原理:
        1.同源间的hash可以相互复制

六、通过window.domian

限制:只能用于二级域名相同的页面

七、通过websocket 与服务器通信

原理: websocket 可以实现与服务器间的双向通信

八、配置nginx进行反向代理

结语:一个具体的实现方式 可以参考 github.com/xiaotting/c…