跨来源资源共享
跨来源资源共享(CORS)是一份浏览器技术的规范,提供了 Web 服务从不同网域传来沙盒脚本的方法,以避开浏览器的同源策略[1],是JSONP模式的现代版。与 JSONP 不同,CORS 除了 GET 要求方法以外也支援其他的 HTTP 要求。用 CORS 可以让网页设计师用一般的XMLHttpRequest,这种方式的错误处理比 JSONP 要来的好。另一方面,JSONP 可以在不支援 CORS 的老旧浏览器上运作。现代的浏览器都支援 CORS[2]。
浏览器支援
拥有以下宣染引擎的浏览器都支援 CORS:
- Gecko1.9.1(Firefox 3.5[1]、SeaMonkey 2.0@H_502_29@[3])以上
- WebKit(未确认最早版本,Safari 4 以上、Chrome 3 以上,可能早些)
- MSHTML/Trident 4.0(Internet Explorer 8)由 XDomainRequest 物件提供部份支援[1]
已知以下浏览器不支援 CORS:
- 至Opera10.61 为止 Opera 未实作 CORS[4]。
- Carmino2.0.x 系列未实作 CORS,因为这些版本建构在 Gecko 1.9.0 之上[5]。
- Arora0.10.2 有 WebKit 的 CORS 相关 API,但是若使用跨来源要求会失败[6]。
[@L_403_20@]历史
Tellme Networks的马特·奥什里(Matt Oshry)、布拉德·波特(Brad Porter)与麦克·波德尔(Michael Bodell)于 2004 年 3 月提案将跨来源支援加入VoiceXML2.1[7]以支援 VoiceXML 浏览器的跨来源资料请求。W3C 认为这不应该限制在 VoiceXML 而是一般的机制,因此将提案移到另一份实作备忘录[8]。几个主要的浏览器厂商透过 W3C 的 Web 应用程式工作小组正式的将该备忘录改写为W3C 工作草案并以推动成为W3C 推荐标准为目标。
[编辑]参见
[编辑]参考资料
- ^1.01.11.2https://developer.mozilla.org/En/HTTP_access_control
- ^http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/
- ^https://developer.mozilla.org/en/Gecko
- ^http://dev.opera.com/forums/topic/693452
- ^http://forums-test.mozillazine.org/viewtopic.php?f=12&t=1579855
- ^http://code.google.com/p/arora/issues/detail?id=904
- ^http://www.w3.org/TR/2004/WD-voicexml21-20040323/
- ^http://www.w3.org/TR/2005/NOTE-access-control-20050613/
[编辑]外部链接
- (英文)W3C 工作草案
- (英文)使用指引
- (英文)推广 CORS 的网站