CORS是一種允許當前域(domain)的資源(比如html/js/web service)被其他域(domain)的腳本請求訪問的機制,通常由於同域安全策略(the same-origin security policy)瀏覽器會禁止這種跨域請求。
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:*,允許瀏覽器的腳本執行伺服器返回的數據。