cors和ajax的差別在於:cors請求時會在HTTP請求頭header中加入幾個關鍵字,用於表示目前請求時跨網域請求,而ajax請求時不會加入這些關鍵字; cors是「Cross-origin resource sharing」的縮寫,表示跨域資源共享。
本文操作環境:windows10系統、javascript1.8.5&&html5版、Dell G3電腦。
CORS 和Ajax 區別:
CORS 和Ajax 在發送請求時沒有任何區別,都是http請求,唯一區別就是CORS 請求時,會在http請求頭header 中加入幾個關鍵字,用來表示目前請求是跨域請求。
擴展知識:
CORS是一個W3C標準,全名為"跨域資源共享"(Cross-origin resource sharing)。我們知道,用瀏覽器發送 http 請求(ajax)就存在跨域的問題,現在主流的解決跨域方案就是 CORS。
這裡特別強調,我們常說的跨域只是瀏覽器的限制,如果我們用腳本發送請求或透過伺服器請求,都不不會有跨網域問題,這其中主要原因是瀏覽器使用門檻非常低,為了防止別有用心的人攻擊普通用戶,所以引入跨域策略
CORS簡介
CORS是W3C 在2014年1月16日發布的一個正式推薦的通訊標準,主要解決用戶代理的Web應用透過Ajax或其他機制從另一個站點存取資源、取得資料的問題。
前提:服務端需要新增支援CORS的相關功能,也就是設定http的Access-Control-Allow-Origin 允許的值
CORS的通訊都由瀏覽器完成,不需要用戶參與。預設瀏覽都是透過Ajax通信,如果瀏覽器在發送請求時監測到當前請求跨域了,就會自動轉成CORS
CORS的兩種請求模式
瀏覽器將CORS請求分成兩類:簡單請求和非簡單請求
#簡單請求就是使用設定的請求方式請求資料
非簡單請求則是在使用設定的請求方式請求資料之前,先發送一個OPTIONS請求,看服務端是否允許客戶端發送非簡單請求.只有"預檢"通過後才會再發送一次請求用於資料傳輸
只要同時滿足以下兩大條件,就屬於簡單請求。
條件一:
請求方法是以下三種方法之一:
HEAD
GET
#POST
條件二:
HTTP的頭資訊不超出以下幾種欄位:
Accept Accept-Language Content-Language Last-Event-ID Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain
簡單請求
簡單請求就是瀏覽器直接傳送一個CORS請求(ajax請求)。在發送之前,瀏覽器會為本次http請求新增一個請求頭 Origin
上面的頭資訊中, Origin 欄位用來說明,本次請求來自哪個來源(協定 網域名稱 連接埠)。伺服器根據這個值,決定是否同意這次請求。
非簡單請求
非簡單請求就是再發送請求前先發送一個OPTIONS 請求,提前檢測一下請求是否被允許,主要目的是為了防止跨域請求對後台數據的破壞或盜取,簡單請求安全性較低,伺服器是處理了請求後再返回數據,非簡單請求模式下,伺服器在提前檢測時不應該處理請求。
【相關教學推薦:AJAX影片教學】
以上是cors和ajax的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!