跨來源資源共享

维基百科,自由的百科全书
跳转至: 导航搜索

跨來源資源共享(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 推薦標準為目標。

參見[编辑]

參考資料[编辑]

  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/

外部連結[编辑]