xmlhttprequest php,关于XMLHttpRequest对302的处理

摘自: http://hi.baidu.com/erik168/item/41a5910c1eca0627a0312dd8

【未亲自测试,请斟酌参考】

javascript代码:

function getXHR() {

return window.ActiveXObject ?

new ActiveXObject("Microsoft.XMLHTTP") :

new XMLHttpRequest();

}

var log = [];

var xhr = getXHR();

//xhr.open('get', '302local.php');

xhr.open('get', '302net.php');

xhr.onreadystatechange = function () {

try {

log.push('status:' + xhr.status + ';readyState:' + xhr.readyState);

} catch (ex) {}

if (xhr.readyState == 4)

{

alert(log.join('\n'));

}

};

xhr.send(null);

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

functiongetXHR(){

returnwindow.ActiveXObject?

newActiveXObject("Microsoft.XMLHTTP"):

newXMLHttpRequest();

}

varlog=[];

varxhr=getXHR();

//xhr.open('get', '302local.php');

xhr.open('get','302net.php');

xhr.onreadystatechange=function(){

try{

log.push('status:'+xhr.status+';readyState:'+xhr.readyState);

}catch(ex){}

if(xhr.readyState==4)

{

alert(log.join('\n'));

}

};

xhr.send(null);

302local.php:

header(“Location:hello.php”);

302net.php:

header(“Location:http://www.baidu.com”);

测试浏览器:

IE7

Firefox3.5

Opera9.6

Safari4

结论:

1.在重定向到本域时,无论如何都无法获得302状态码,XMLHttpRequest对象会直接读取重定向资源的内容

Fx3.5 alert:

status:200;readyState:2

status:200;readyState:3

status:200;readyState:4

IE7 alert:

status:200;readyState:4

Safari4 alert:

status:200;readyState:2

status:200;readyState:3

status:200;readyState:4

Opera9.6 alert:

status:200;readyState:3

status:200;readyState:4

2.在重定向到其他域时:

Safari和Opera会哑掉

IE会问你“可能导致安全风险,是否继续”,是的话取得status是200,否的话取得status是0

Firefox会获得302的status

Fx3.5 alert:

status:302;readyState:2

status:302;readyState:4

IE7 alert:

status:200;readyState:4

or

status:0;readyState:4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值