1.簡介
CORS,跨域資源共享,需要瀏覽器和服務器同時支持,基本思想為使用自定義的HTTP頭部讓瀏覽器和服務器通信
2.分類
瀏覽器將CORS分為兩類:
- 簡單請求
HEAD,GET,POST,
HTTP頭部信息不超出幾個字段 - 非簡單請求
- HEAD請求
只請求頁面的首部,可以判斷一個資源是否存在
3.簡單請求
瀏覽器直接發出CORS請求,在頭信息中添加一個Origin字段,用來說明請求來自哪個源,服務器根據這個值,決定是否同意這次請求
- 如果服務器不許可,則返回的信息中不會包含Access-Control-Allow-Origin字段,這個錯誤需要onerror捕獲,返回的狀態碼可能為200
- 如果服務器許可,則服務器返回的響應中會多出Access-Control-字段
- CORS默認不發送cookie,需要發送cookies,則需要服務器指定Access-Control-Allow-Credentials字段,需要在ajax請求中打開withCredentials屬性
4.非簡單請求
請求方法是PUT或DELETE,Content-Type字段類型是application/json
會在正式通信前,增加一次OPTIONS查詢請求,預檢請求
詢問服務器,網頁所在域名是否在服務器的許可名單中,以及可以使用那些HTTP動詞和頭信息字段,只有得到肯定答復,瀏覽器才會發出正式XMLHTTPRequest請求,否則會報錯
服務器通過預檢請求,以后每次瀏覽器正常CORS請求,都會和簡單請求一樣,會有一個Origin字段,服務器的回應也會有yieldAccess-Control-Allow-Origin頭信息字段