跨域通信

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

posted @ 2018-04-24 14:19  Daya  阅读(3488)  评论(0编辑  收藏  举报