跨域通信
1. 不考虑低版本浏览情况下,还是使用XMLHttpRequest对象,IE下使用XDomainRequest
咱们一般都会用ajax 做前后台交互,也就是我们常用的XHRHttpRequest2对象,那么这个倒底是否支持跨域通信呢?
我们接下来看一下( IE5,6我们先忽略 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); )
在标准浏览器下,XMLHttpRequest对象已经是升级版本,支持了更多的特性,可以跨域了
但是,如果想实现跨域请求,还需要后端的相关配合才可以,
后台需要设置头部允许跨域 header('Access-Control-Allow-Origin:http://www.a.com'); //这是允许访问该资源的域
1 var xhr = new XMLHttpRequest(); 2 xhr.onreadystatechange = function() { 3 if (xhr.readyState == 4) { 4 if (xhr.status == 200) { 5 alert(xhr.responseText); 6 } 7 } 8 } 9 xhr.open('get', 'elseDomain_url', true); 10 xhr.send();
XMLHttpRequest : 增加很多功能,他也不推荐使用onreadystatechange这个事件来监听,推荐使用load ,error, 详见 https://www.w3.org/TR/2012/WD-XMLHttpRequest-20120117/#event-xhr-load
XDomainRequest : IE如果想实现跨域请求,IE下使用 XDomainRequest 对象,如下
1 var oXDomainRequest = new XDomainRequest(); 2 oXDomainRequest.onload = function() { 3 alert(this.responseText); 4 } 5 oXDomainRequest.open('get', 'elseDomain_url', true); 6 oXDomainRequest.send();
2. JSONP
3. Hash
4.PostMessage
5.WebSocket
6. CORS
Hello Javascript!