jsonp VS W3C 的Cross-Origin Resource Sharing

才看到W3C的cross original resource sharing,又多了一种跨域的选择.

(官方的跨域解决出现了,看了下文档时间貌似很久了...我果然很out)


那和民间标准jsonp 比有啥优势呢:

[color=blue]1.支持多种http方法[/color]

jsonp一般只支持get方法。

而w3c的cross orginal resouce sharing 支持http的其他几种方法,例如put,delete...

[color=blue]2.简单[/color]

对于服务端来说,设置一个response head 就能搞定W3C CORS,


Access-Control-Allow-Origin: http://your site


检查下origin就可以选择是否要返回response.


而对于jsonp来说,要进行安全检查

[color=blue]3.安全[/color]

这个就不废话了,jsonp就是script注入,跨站攻击一般都会考虑....

劣势:

这玩意儿要看浏览器颜色,和HTML5一样 不是谁都可以用的........
----------------------------------------------------------------------

W3C CORS客户端实现

只搞了FF的,IE的貌似是XDomainRequest.....下次补上

var XCOS = function(type,url){
var xhr = new XMLHttpRequest();

if (xhr && "withCredentials" in xhr){
xhr.open(type, url, true);
}
else xhr = null;
var success = function(msg,obj){
alert(msg);
};
var error = function(obj){
alert("error");
};
var handle_load = function (event_type) {
return function (XHRobj) {
if (event_type == 'load' && (XHRobj.readyState == 4) && success)
success(XHRobj.responseText, XHRobj);
else if (error)
error(XHRobj);
};
};

try {
xhr.withCredentials = true;
} catch(e) {};

xhr.onload = function (e) { handle_load('load')(e.target); };
xhr.onerror = function (e) { handle_load('error')(e.target); };
xhr.send();
};




W3C 服务端代码:


response.setHeader("Access-Control-Allow-Origin","xyz")
response.setHeader("Access-Control-Allow-Methods","get")



最后 我承认以下写的比我好多了

http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors

http://www.w3.org/TR/cors/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值