一、什么是跨域
定义:两个不同源的服务器去访问对方的资源,不同源即指域名,协议,端口号等均不一样。当发生跨域请求的时候,请求是可以正常发送到对方服务器的,只是浏览器会根据“Access-Control-Allow-Origin”来判断当前域名是否有访问权限,从而决定是否解析返回的数据信息。
二、如何实现跨域
1、JSONP:在客户端借助script标签请求服务端的一个动态网页,服务端的这个动态网页返回一段带有函数调回的JavaScript全局函数调用的脚本,将原本需要返回给客户端的数据传递进去。这种方式只能发送GET请求,需要服务端的配合
2、CORS实现跨域资源共享:CORS跨域通信与AJAX同源通信没有很大区别,允许浏览器向跨源服务器发送XMLHttpRequest请求,分为简单请求和非简单请求
简单请求:
(1) 请求方法是以下三种方法之一:
HEAD
GET
POST
(2)HTTP的头信息不超出以下几种字段:
Accept
Accept-Language
Content-Language
Last-Event-ID
Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain
非简单请求:
非简单请求是那种对服务器有特殊要求的请求,比如请求方法是PUT或DELETE,或者Content-Type字段的类型是application/json。
非简单请求的CORS请求,会在正式通信之前,增加一次HTTP查询请求,称为"预检"请求(preflight)。
3、通过后台HTTP访问不同源的服务