Cors(Cross-origin Resource Sharing)一種跨域訪問技術,基本思想是使用自定義的HTTP頭部容許瀏覽器和服務器相互瞭解對方,從而決定響應成功與否。跨域
CORS與JSONP對比:瀏覽器
1.JSONP只能實現get請求,而CORS支持全部類型的HTTP請求;服務器
2.使用CORS,開發者能夠使用普通的XmlHttpRequest發起請求和得到數據,比起JSONP有更好的錯誤處理;資源
3.JSONP主要被老的瀏覽器支持,它們每每不支持CORS,而如今大多數瀏覽器都已經支持CORS;開發
CORS瀏覽器支持狀況:get
Chrome 3+原理
Firefox 3.5+請求
Opera 12+技術
Safari 4+數據
Internet Explorer 8+
CORS是一種協議,它用來約定服務端和客戶端那些行爲是被服務端容許的。儘管服務端是能夠進行驗證和認證的,但基本上這是由客戶端瀏覽器來保證的。這些對行爲的容許是放在應答包的header裏面的。
工做原理
CORS的實現主要包括一些客戶端的工做以及兩類服務端的處理。
業務邏輯
若是origin被服務端容許,服務端返回請求是帶有 Access-Controll-Allow-Origin 頭, 而且這個頭部信息的值和客戶端Origin 的值保持一致;不然就表示不被容許。若是 Access-Controll-Allow-Origin 被設置成 "*",則意味着任何Origin都被容許。
注意:若是所訪問的資源須要憑證,那麼 Access-Controll-Allow-Origin 則不該該被設置爲 "*" 並且 Access-Control-Allow-Credentials 頭須要被設置成 true.