JavaScript跨域问题--CORS

1.CORS

Firefox3.5+、Safari4+、Chrome、iOS版Safari和Android平台中的WebKit都通过XMLHttpRequest对象实现对CORS原生支持。IE则是引入XDR类型(与XHR类似)来支持CORS。

XHR跨域:

    跨域注意:1.不能使用setRequestHeader()设置自定义头部

                     2.不能发送接收cookie

                     3.调用getAllResponseHeaders()总会返回空字符串

function createXHR(){
	var xhr;
	if(window.XMLHttpRequest){
		xhr = new XMLHttpRequest();
	}else{
		xhr = new ActiveXObject('Micosoft.XMLHTTP');
	}
	return xhr;
}
var xhr = createXHR();
xhr.onreadystatechange = function(){
	if(xhr.readyState==4){
		try{
			if((xhr.status == 200 && xhr.status < 300) || xhr.status == 304){
				console.log(xhr.status, xhr.responseText);
				console.log(xhr.getAllResponseHeaders());
			}else{
				console.log("unsuccessful:" + xhr.status + xhr.statusText);
			}	
		}catch(ex){
			xhr.ontimeout();
		}
	}
};
xhr.timeout = 1000;
xhr.ontimeout = function(){
	console.log("timeout");
}
xhr.open("get", "http://www.somewhere-else.com/page/", true);
xhr.send();
XDR实现跨域:
var xdr = new XDomainRequest();
xdr.onload = function(){
	alert(xdr.responseText);
};
//xdr出现错误时,不能收到具体错误,只能检测到存在错误
//导致xdr出错的原因很多,onerror函数是必不可少的
xdr.onerror = function(){
	alert("an error occurred");
}
//xdr的open函数只接受两个参数,只能异步执行
xdr.open("get","http://www.somewhere-else.com/page/");
xdr.send();

XDR的post请求:

xdr.open("post","http://www.somewhere-else.com/page/");
xdr.contentType = "application/x-www-form-urlencoded";
xdr.send("name=value1&pass=value2");

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值