Ajax跨域(AJAX的核心是XMLHttpRequest)
原生ajax的四个过程:
实例化,open,send,onreadystatechange,然后是req,readyState和status。
为什么会发生ajax跨域(同时满足以下三个,可能跨域原因)
1.浏览器限制
2.跨域.端口不同/协议不同/ip不同
3.XHR(XMLHttpRequest)请求类型
解决方法:
1.代理
通过后台(ASP、PHP、JAVA、ASP.NET)获取其他域名下的内容,再把获得内容返回到前端,这样因为在同一个域名下,所以就不会出现跨域的问题。
2.JSONP
只支持GET请求,返回数据格式必须是json数据
3.XHR2(XMLHttpRequest Level2)
(在服务器端响应接口添加2个响应头)
Access-Control-Allow-Origin: * //*代表任何域。也可以指定地址
Access-Control-Allow-Methods: POST,GET //支持的方法
这样在客户端使用常规的ajax即可
总结
代理实现最麻烦,但使用最广泛,任何支持AJAX的浏览器都可以使用这种方式。
JSONP相对简单,但只支持GET方式调用。
XHR2最简单,但只支持HTML5,如果你是移动端开发,可以选择使用XHR2。
//Jquery
$.ajax({
type:"get",
url:url,
async:false, //async是异步 sync是同步
data:{},
dataType:"json",
succedd:function(msg){
},
error:function(){
}
});