CORS’s source, principle and implementation

CORS的做用:

  爲了改善網絡應用程序,開發人員要求瀏覽器供應商容許跨域請求。跨域請求主要用於:canvas

  • 調用XMLHttpRequest或fetchAPI經過跨站點方式訪問資源
  • 網絡字體,例如Bootstrap(經過CSS使用@font-face 跨域調用字體)
  • 經過canvas標籤,繪製圖表和視頻。

 

什麼狀況下須要 CORS:

  跨域資源共享標準( cross-origin sharing standard )容許在下列場景中使用跨域 HTTP 請求:跨域

  • 由 XMLHttpRequest 或 Fetch 發起的跨域 HTTP 請求。
  • Web 字體 (CSS 中經過 @font-face 使用跨域字體資源), 所以,網站就能夠發佈 TrueType 字體資源,並只容許已受權網站進行跨站調用。
  • WebGL 貼圖
  • 使用 drawImage 將 Images/video 畫面繪製到 canvas
  • 樣式表(使用 CSSOM)

 

CORS實現:

  CORS也有一些限制,兩種模型能夠實現:瀏覽器

  1.簡單模型
  支持get/post/put/delete請求,例如返回Access-Control-Allow-Origin:*,可是不容許自定義header且會忽略cookies,且post數據格式有限制,只支持‘text/plain','application/x-www-urlencoded'and'multipart/form-data',其中’text/plain'默認支持,後面兩種須要下面的預檢請求和服務器協商。
  2.協商模型/預檢請求(Preflighted Request)
  舉例:瀏覽器發出PUT請求,OPTION請求返回Access-Control-Allow-Origin:*,Access-Control-Allow-Methods:’PUT’,服務器贊成全部域的PUT請求,瀏覽器收到並繼續發出真正的PUT請求,服務器響應並再次返回Access-Control-Allow-Origin:*,容許瀏覽器的腳本執行服務器返回的數據。
相關文章
相關標籤/搜索