fbpx
维基百科

跨來源資源共享

跨域资源共享(英語:Cross-origin resource sharing,缩写:CORS),用于让网页的受限资源能够被其他域名的页面访问的一种机制。[1]

通过這個机制,页面能够自由地使用跨來源的(英語:cross-origin)图片、样式、脚本、iframes以及视频。[2]一些跨網域的请求(特别是Ajax)常常会被同源策略(英語:same-origin policy)所禁止。跨源资源共享定义了一种方式,讓浏览器和服务器之间能互相确认是否足够安全可以允許使用跨源请求(英語:cross-origin requests)。[3]比起嚴格的同源请求,这将提供更多自由度和功能性(functionality),也比直接允許所有的跨源请求更為安全。

跨域资源共享是一份瀏覽器技術的規範,提供了 Web 服務從不同網域傳來沙盒腳本的方法,以避開瀏覽器的同源策略[4]

工作原理 编辑

跨域资源共享标准描述了,新的HTTP头部在浏览器有权限的时候,应该以如何的形式发送请求到远程URLs。虽然服务器会有一些校验和认证,但是浏览器有责任去支持这些头部以及增加相关的限制。

对于能够修改数据的Ajax和HTTP请求方法(特别是 GET 以外的 HTTP 请求,或者搭配某些 MIME 类型的 POST 请求),浏览器必须首先使用 OPTIONS 方法发起一个预检请求(preflight request),从而获知服务端是否允许该跨源请求。服务器确认允许之后,才发起实际的 HTTP 请求。在预检请求的返回中,服务器端也可以通知客户端,是否需要携带身份凭证(包括 Cookies 和 HTTP 认证相关数据)。[5]

瀏覽器支援 编辑

擁有以下排版引擎的瀏覽器都支援 CORS:

已知以下瀏覽器不支援 CORS:

  • Opera 10.61 為止 Opera 未實作 CORS[9]
  • Carmino 2.0.x 系列未實作 CORS,因為這些版本建構在 Gecko 1.9.0 之上[10]
  • Arora 0.10.2 有 WebKit 的 CORS 相關 API,但是若使用跨來源要求會失敗[11]

歷史 编辑

Tellme Networks 的馬特·奧什里(Matt Oshry)、布拉德·波特(Brad Porter)與麥克·波德爾(Michael Bodell)於 2004 年 3 月提案將跨來源支援加入 VoiceXML 2.1[12] 以支援 VoiceXML 瀏覽器的跨來源資料請求。W3C 認為這不應該限制在 VoiceXML 而是一般的機制,因此將提案移到另一份實作備忘錄[13]。幾個主要的瀏覽器廠商透過 W3C 的 Web 應用程式工作小組正式的將該備忘錄改寫為 W3C 工作草案並以推動成為 W3C 推薦標準為目標。

CORS vs JSONP 编辑

跨域资源共享(CORS)是 JSONP 模式的現代版。與 JSONP 不同,CORS 除了 GET 请求方法以外也支援其他的 HTTP 请求。用 CORS 可以讓網頁設計師用一般的 XMLHttpRequest,這種方式的錯誤處理比 JSONP 要來的好。另一方面,JSONP 可以在不支援 CORS 的老舊浏览器上運作。現代的瀏覽器都支援 CORS[14]

參見 编辑

参考文献 编辑

  1. ^ on July 6, 2009 by Arun Ranganathan. cross-site xmlhttprequest with CORS ✩ Mozilla Hacks – the Web developer blog. Hacks.mozilla.org. 2009-07-06 [2012-07-05]. (原始内容于2019-09-11). 
  2. ^ . MDN. [2020-01-17]. (原始内容存档于2017-03-12). 
  3. ^ Cross-domain Ajax with Cross-Origin Resource Sharing. NCZOnline. [2012-07-05]. (原始内容于2016-04-29). 
  4. ^ 4.0 4.1 4.2 . Mozilla Developer Network. [2011-06-28]. (原始内容存档于2010-05-27). 
  5. ^ HTTP访问控制(CORS). MDN Web 文档. [2020-01-17]. (原始内容于2020-01-14) (中文). 
  6. ^ 6.0 6.1 Blink. QuirksBlog. April 2013 [4 April 2013]. (原始内容于2016-12-29). 
  7. ^ Google going its own way, forking WebKit rendering engine. Ars Technica. April 2013 [4 April 2013]. (原始内容于2020-12-21). 
  8. ^ Gecko. Mozilla Developer Network. [2011-06-28]. (原始内容于2012-08-03). 
  9. ^ . [2011-06-28]. (原始内容存档于2011-07-17). 
  10. ^ HTTP Access Control in Camino • mozillaZine Forums. [2011-06-28]. (原始内容于2016-03-03). 
  11. ^ . [2011-06-28]. (原始内容存档于2012-11-09). 
  12. ^ Voice Extensible Markup Language (VoiceXML) 2.1. [2011-06-28]. (原始内容于2016-09-23). 
  13. ^ Authorizing Read Access to XML Content Using the <?access-control?> Processing Instruction 1.0. [2018-06-10]. (原始内容于2018-09-24). 
  14. ^ Cross-domain Ajax with Cross-Origin Resource Sharing. [2011-06-28]. (原始内容于2016-04-29). 

外部連結 编辑

跨來源資源共享, 此條目的引用需要改寫, 使其符合格式, 2018年6月10日, 参考資料应符合正确的引用, 脚注及外部链接格式, 此條目可参照英語維基百科相應條目来扩充, 若您熟悉来源语言和主题, 请协助参考外语维基百科扩充条目, 请勿直接提交机械翻译, 也不要翻译不可靠, 低品质内容, 依版权协议, 译文需在编辑摘要注明来源, 或于讨论页顶部标记, href, template, translated, page, html, title, template, translated, page, transla. 此條目的引用需要改寫 使其符合格式 2018年6月10日 参考資料应符合正确的引用 脚注及外部链接格式 此條目可参照英語維基百科相應條目来扩充 若您熟悉来源语言和主题 请协助参考外语维基百科扩充条目 请勿直接提交机械翻译 也不要翻译不可靠 低品质内容 依版权协议 译文需在编辑摘要注明来源 或于讨论页顶部标记 a href Template Translated page html title Template Translated page Translated page a 标签 跨域资源共享 英語 Cross origin resource sharing 缩写 CORS 用于让网页的受限资源能够被其他域名的页面访问的一种机制 1 通过這個机制 页面能够自由地使用跨來源的 英語 cross origin 图片 样式 脚本 iframes以及视频 2 一些跨網域的请求 特别是Ajax 常常会被同源策略 英語 same origin policy 所禁止 跨源资源共享定义了一种方式 讓浏览器和服务器之间能互相确认是否足够安全可以允許使用跨源请求 英語 cross origin requests 3 比起嚴格的同源请求 这将提供更多自由度和功能性 functionality 也比直接允許所有的跨源请求更為安全 跨域资源共享是一份瀏覽器技術的規範 提供了 Web 服務從不同網域傳來沙盒腳本的方法 以避開瀏覽器的同源策略 4 目录 1 工作原理 2 瀏覽器支援 3 歷史 4 CORS vs JSONP 5 參見 6 参考文献 7 外部連結工作原理 编辑跨域资源共享标准描述了 新的HTTP头部在浏览器有权限的时候 应该以如何的形式发送请求到远程URLs 虽然服务器会有一些校验和认证 但是浏览器有责任去支持这些头部以及增加相关的限制 对于能够修改数据的Ajax和HTTP请求方法 特别是 GET 以外的 HTTP 请求 或者搭配某些 MIME 类型的 POST 请求 浏览器必须首先使用 OPTIONS 方法发起一个预检请求 preflight request 从而获知服务端是否允许该跨源请求 服务器确认允许之后 才发起实际的 HTTP 请求 在预检请求的返回中 服务器端也可以通知客户端 是否需要携带身份凭证 包括 Cookies 和 HTTP 认证相关数据 5 瀏覽器支援 编辑擁有以下排版引擎的瀏覽器都支援 CORS Blink 與所有基於 Chromium 的瀏覽器 Google Chrome 28 6 7 Opera 15 6 Amazon Silk Android s 4 4 WebView 與 Qt WebEngine Gecko 1 9 1 Firefox 3 5 4 SeaMonkey 2 0 8 以上 WebKit 未確認最早版本 Safari 4 以上 Google Chrome 3 以上 可能早些 MSHTML Trident 4 0 Internet Explorer 8 由 XDomainRequest 物件提供部份支援 4 已知以下瀏覽器不支援 CORS 至 Opera 10 61 為止 Opera 未實作 CORS 9 Carmino 2 0 x 系列未實作 CORS 因為這些版本建構在 Gecko 1 9 0 之上 10 Arora 0 10 2 有 WebKit 的 CORS 相關 API 但是若使用跨來源要求會失敗 11 歷史 编辑Tellme Networks 的馬特 奧什里 Matt Oshry 布拉德 波特 Brad Porter 與麥克 波德爾 Michael Bodell 於 2004 年 3 月提案將跨來源支援加入 VoiceXML 2 1 12 以支援 VoiceXML 瀏覽器的跨來源資料請求 W3C 認為這不應該限制在 VoiceXML 而是一般的機制 因此將提案移到另一份實作備忘錄 13 幾個主要的瀏覽器廠商透過 W3C 的 Web 應用程式工作小組正式的將該備忘錄改寫為 W3C 工作草案並以推動成為 W3C 推薦標準為目標 CORS vs JSONP 编辑跨域资源共享 CORS 是 JSONP 模式的現代版 與 JSONP 不同 CORS 除了 GET 请求方法以外也支援其他的 HTTP 请求 用 CORS 可以讓網頁設計師用一般的 XMLHttpRequest 這種方式的錯誤處理比 JSONP 要來的好 另一方面 JSONP 可以在不支援 CORS 的老舊浏览器上運作 現代的瀏覽器都支援 CORS 14 參見 编辑容許任何來源存取的Web服務列表 HTTP访问控制 CORS 页面存档备份 存于互联网档案馆 参考文献 编辑 on July 6 2009 by Arun Ranganathan cross site xmlhttprequest with CORS Mozilla Hacks the Web developer blog Hacks mozilla org 2009 07 06 2012 07 05 原始内容存档于2019 09 11 Same origin policy Cross origin network access MDN 2020 01 17 原始内容存档于2017 03 12 Cross domain Ajax with Cross Origin Resource Sharing NCZOnline 2012 07 05 原始内容存档于2016 04 29 4 0 4 1 4 2 HTTP access control CORS Mozilla Developer Network 2011 06 28 原始内容存档于2010 05 27 HTTP访问控制 CORS MDN Web 文档 2020 01 17 原始内容存档于2020 01 14 中文 6 0 6 1 Blink QuirksBlog April 2013 4 April 2013 原始内容存档于2016 12 29 Google going its own way forking WebKit rendering engine Ars Technica April 2013 4 April 2013 原始内容存档于2020 12 21 Gecko Mozilla Developer Network 2011 06 28 原始内容存档于2012 08 03 存档副本 2011 06 28 原始内容存档于2011 07 17 HTTP Access Control in Camino mozillaZine Forums 2011 06 28 原始内容存档于2016 03 03 存档副本 2011 06 28 原始内容存档于2012 11 09 Voice Extensible Markup Language VoiceXML 2 1 2011 06 28 原始内容存档于2016 09 23 Authorizing Read Access to XML Content Using the lt access control gt Processing Instruction 1 0 2018 06 10 原始内容存档于2018 09 24 Cross domain Ajax with Cross Origin Resource Sharing 2011 06 28 原始内容存档于2016 04 29 外部連結 编辑 英文 W3C 工作草案 页面存档备份 存于互联网档案馆 英文 使用指引 英文 推廣 CORS 的網站 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title 跨來源資源共享 amp oldid 80457446, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。