跨来源资源共享CORS

来源:互联网 发布:不怕死知乎 编辑:程序博客网 时间:2024/05/19 16:06

跨来源资源共享


跨来源资源共享(CORS)是一份浏览器技术的规范,提供了 Web 服务从不同网域传来沙盒脚本的方法,以避开浏览器的同源策略[1],是 JSONP 模式的现代版。与 JSONP 不同,CORS 除了 GET 要求方法以外也支援其他的 HTTP 要求。用 CORS 可以让网页设计师用一般的 XMLHttpRequest,这种方式的错误处理比 JSONP 要来的好。另一方面,JSONP 可以在不支援 CORS 的老旧浏览器上运作。现代的浏览器都支援 CORS[2]

浏览器支援

拥有以下宣染引擎的浏览器都支援 CORS:

  • Gecko 1.9.1(Firefox 3.5[1]、SeaMonkey 2.0[3])以上
  • WebKit(未确认最早版本,Safari 4 以上、Chrome 3 以上,可能早些)
  • MSHTML/Trident 4.0(Internet Explorer 8)由 XDomainRequest 物件提供部份支援[1]

已知以下浏览器不支援 CORS:

  • 至 Opera 10.61 为止 Opera 未实作 CORS[4]
  • Carmino 2.0.x 系列未实作 CORS,因为这些版本建构在 Gecko 1.9.0 之上[5]
  • Arora 0.10.2 有 WebKit 的 CORS 相关 API,但是若使用跨来源要求会失败[6]

[编辑]历史

Tellme Networks 的马特·奥什里(Matt Oshry)、布拉德·波特(Brad Porter)与麦克·波德尔(Michael Bodell)于 2004 年 3 月提案将跨来源支援加入 VoiceXML 2.1[7] 以支援 VoiceXML 浏览器的跨来源资料请求。W3C 认为这不应该限制在 VoiceXML 而是一般的机制,因此将提案移到另一份实作备忘录[8]。几个主要的浏览器厂商透过 W3C 的 Web 应用程式工作小组正式的将该备忘录改写为 W3C 工作草案并以推动成为 W3C 推荐标准为目标。

[编辑]参见

  • 容许任何来源存取的Web服务列表

[编辑]参考资料

  1. 1.0 1.1 1.2 https://developer.mozilla.org/En/HTTP_access_control
  2. ^ http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/
  3. ^ https://developer.mozilla.org/en/Gecko
  4. ^ http://dev.opera.com/forums/topic/693452
  5. ^ http://forums-test.mozillazine.org/viewtopic.php?f=12&t=1579855
  6. ^ http://code.google.com/p/arora/issues/detail?id=904
  7. ^ http://www.w3.org/TR/2004/WD-voicexml21-20040323/
  8. ^ http://www.w3.org/TR/2005/NOTE-access-control-20050613/

[编辑]外部链接

  • (英文)W3C 工作草案
  • (英文)使用指引
  • (英文)推广 CORS 的网站
原创粉丝点击