什么是跨域?
- 每一个web服务都是一个区域,当两个web服务之间相互通讯时,所以产生了跨域。
为什么会存在跨域?
- 这是由于浏览器的同源策略的限制。同源策略规定了如果不是同源的服务,相互之间通讯是不允许的,因为这样可能存在安全问题。
- 同源策略:
- 同协议、同域名、同端口
- 同协议、同域名、同端口
如何处理跨域
- 如果不是相互通讯的话即可以不受同源策略的影响。
- 例如:script标签和iframe标签,都是属于引用外部资源,不存在跨域问题,即不受同源策略的影响。
跨域方法
JSONP
- 通过script标签引用接口出传递回调函数,通过回调函数接收参数的方法接收数据
Iframe
- document.domain
- location.hash
- window.name
- postMessage
CORS
- 设置跨域资源共享,允许所有的服务访问我的服务。即告诉浏览器不要限制别的服务访问我的服务。
- 设置Access-Control-Allow-Origin。
Proxy代理
- proxy对象通过拦截你的请求,然后开启一个nodejs服务去访问你的接口,没有通过浏览器,所以也不受同源策略的影响。
WebSocket协议
- 该协议规定直接允许跨域通讯,即不存在跨域。