1.要讨论的是浏览器端的真正跨域访问,推荐的是目前jQuery $.ajax()支持get方式的跨域,这其实是采用jsonp的方式来完成的.
dataType : 'jsonp',
jsonp : 'callback',crossDomain :true设置前两个就可以了
参考contentType: 'application/x-www-form-urlencoded; charset=UTF-8',mode: "cors",headers:{"Access-Control-Allow-Origin": "*","Access-Control-Allow-Methods":"GET,POST,OPTIONS","Access-Control-Allow-Headers":"Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With","Access-Control-Allow-Credentials":"true"}
2.跨域代理
主要原理就是写一个代理请求的转发过程。客户端请求自己的服务器,服务器把请求目标地址并且得到回应,服务器再把结果返回给客户端。这种方式,对于开发者来说还是不错的选择,因为可以在服务器上对回应的结果做自己的处理后把重新组织过的数据返回给客户端。
服务器通过返回响应头进行权限控制: Access-Control-Allow-Origin:控制那些外部请求可以访问该资源
Access-Control-Allow-Credentials :结合客户端 xmlhttprequest 的 withCredentials 属性可以控制是否发送 cookie 等验证信息
Access-Control-Allow-Headers :控制客户端可以发送的额外头部信息,多个值使用逗号分隔
Access-Control-Allow-Methods: 控制客户端可以发送的请求方法(如:POST),多个值使用逗号