IE XDomainRequest 学习笔记
来源:互联网 发布:淘宝网购物女装衬衣 编辑:程序博客网 时间:2024/05/22 17:43
官网地址:http://www.w3.org/TR/XMLHttpRequest2/
http://msdn.microsoft.com/en-us/library/ie/cc288060(v=vs.85).aspx
不过都是英文的。。。
W3C CORS(跨域资源共享)是对于跨域请求的一个规范,目前各个主流浏览器都实现了这个规范,IE8开始,增加了XDomainRequest作为跨域请求的对象,而Firefox与Chrom则CORS直接实现在XMLHttpRequest对象中,更方便使用。不过IE10中,XMLHttpRequest对象也实现了CORS。
本文主要总结 XDomainRequest 对象一些使用方法。XDomainRequest 首先是个简单的实现,他仅有有限的几个方法供我们来调用,支持少数事件但足够。
- 仅只是 GET 和 POST 两个方法。
- 支持的事件有:onerror,onload,onprogress,ontimeout
- 提供的方法:abort,open,send
- 提供的属性:contentType, responseText,timeout
以下是个一个典型的代码片段
varurl = 'http://localhost:8084/Server/HandlerServlet';
varxdr = newXDomainRequest();
xdr.onload = function() {
alert(xdr.responseText);
};
xdr.onerror = function() {
alert("error");
};
xdr.timeout = 1000;
xdr.ontimeout = function() {
alert("timeout");
};
xdr.open("get", url);
xdr.send();
xdr.open("get", url);
xdr.send();
注意,使用跨域的时候,如果需要使用跨域请求返回的内容,则需添加响应头 Access-Control-Allow-Origin:* ,* 代表了允许任何域使用响应的内容。在Java中的做法如下:
response.addHeader(
"Access-Control-Allow-Origin"
,
"*"
);
上面是使用 GET 请求,然后再说一下使用 POST 请求的方式,这里有需要注意的地方,使用 POST 请求的代码片段如下:
xdr.open("post", url);
varpostData = encodeURI(JSON.stringify(data));
xdr.send("num=1000");
这里并没有什么需要注意的地方,需要注意的地方在服务端,在服务端你并不能从参数中获取到 POST 的数据,在java中你并不能通过 request.getParameter来获得num的内容,你只能从流里面读取出来,然后在自行解析,代码片段如下:
String s = null;
while((s = br.readLine()) != null) {
System.out.println(s);
}
这可能是 XDomainRequest 的一个bug,也可能是故意这么实现的,这我们就不深究了,知道如何获取数据就可以了。
不管如何,XDomainRequest毕竟给我提供了一个跨域请求的方式,在Ajax开发中,如果有跨域请求,且浏览器版本在IE10以下, XDomainRequest 给了我们一个捷径。
- IE XDomainRequest 学习笔记
- ie 的XDomainRequest对于cors支持的资料
- 跨域请求XDomainRequest
- AngularJs学习笔记--IE Compatibility 兼容老版本IE
- 学习笔记:IE Hack 条件注释
- CDISC SDTM IE domain学习笔记
- flash学习笔记:添加收藏夹老板键(IE和fireFox)
- 【js学习笔记-105】----利用IE userData持久化数据
- IE插件工作笔记
- ie浏览器兼容笔记
- ie浏览器兼容笔记
- IE CSS滤镜学习
- 学习内嵌ie
- 【学习笔记】用C#写Web自动化测试框架【2】-- 启动IE
- div+css学习笔记(IE与fox好多不兼容的问题)
- ActiveX学习笔记二 ActiveX在IE中安全级别问题-实现IObjectSafety接口
- WebSocket学习笔记–IE,IOS,Android等设备的兼容性问题与代码实现
- html学习笔记(一)头部引用(if IE)hack
- ContentProvider 那点事儿
- android读取properties配置文件
- $.fn.extend的讲解, jQuery插件开发的两种方法
- hdu 1306 String Matching
- 具有中国特色的docker折腾记(上)
- IE XDomainRequest 学习笔记
- 3.求子数组的最大和(数组)
- ORACLE(SQL)使用小记
- HDU 1098
- linux命令ps aux|grep xxx详解
- poj 1363 Rails
- C中内存堆栈的布局---linux 简单实例
- 一个毕业五年的女程序员的工作经历上
- SecureCRT(Linux平台)中的一些实用/有趣用法