ie7+ajax跨域,IE7+浏览器下XMLHttpRequest跨域请求安全配置

IE7+浏览器已经开始支持XMLHttpRequest对象,当使用XMLHttpRequest请求不同源的文件(不同域名的页面),和浏览器是否启用安全-》internet区域的“通过域访问数据源”有关系。

如果启用了此选项,那么所有跨域的页面都可以访问,即使跨域的页面没有设置过Access-Control-Allow-Origin响应头。

如果禁用了“通过域访问数据源”,跨域页面设置过Access-Control-Allow-Origin响应头为*,也无法请求,open时就报错。

25d058efe20993eb836230779938bd1a.png

注意:如果双击运行或者拖拽进入IE浏览器,XMLHttpRequest对象无法请求本地资源,会出现“拒绝访问”错误,activexobject创建的对象则没有限制,具体参考:网站未发布,ajax能请求的本地资源有哪些。

/*var xdr=new XMLHttpRequest();

//xdr.open("get", '11.txt', true); //本地测试访问本地资源,出现拒绝访问错误

xdr.open("post", 'http://www.w3dev.cn/json.asp', true); //如果禁用了“通过域访问数据源”,跨域页面设置过Access-Control-Allow-Origin响应头为*,也无法请求,open时就报错。

xdr.onreadystatechange = function () {

if (xdr.readyState == 4) alert(xdr.responseText)

}

xdr.send(null)*/

如果未启用安全-》internet区域的“通过域访问数据源”,跨域页面设置过Access-Control-Allow-Origin响应头为*允许所有不同源的页面请求,IE要如何请求此类页面得到跨域页面的内容?可以使用IE专有的XDomainRequest对象。

var xdr = new XDomainRequest();

//注意XDomainRequest对象本地浏览(双击或者拖拽)无法请求跨域页面,要不报“拒绝访问。”,

//需要发布网站,并且跨域请求仅支持http:// 和https:// 2种协议。

//跨域的页面要设置过Access-Control-Allow-Origin响应头为*,要不没有反应,也不会报错。

xdr.open("post", 'http://www.w3dev.cn/json.asp');

xdr.onload = function () {

alert(xdr.responseText)

}

xdr.send(null);

加支付宝好友偷能量挖...

2013-8-13Web开发网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值