瀏覽器的同源策略:協議相同、域名相同、埠相同,所有瀏覽器廠商遵循這種策略,
非同源(跨域)共有三種行為受到限制:
- cookie、localstorage、和IndexDB無法獲取
- DOM無法獲取
- ATAX請求不能發送
這種同源性會有效的阻止CSRF(跨站請求)攻擊,
瀏覽器請求分為兩種:(CORS請求)
- 簡單請求:只要滿足一下方式中的兩種,視為簡單
- 請求方式是GET、POST、HEAD
- HTTP請求頭不超過如下欄位: ACCEPT、ACCEPT-LANGUAGE、Last-Event-ID、Content-langage、content-type
- 請求中的任意XHR物件均沒有注冊事件反射器
- XHR物件可以使用XHR.upload屬性訪問,請求中沒有使用ReadableStream物件
對于簡單請求瀏覽器會直接發送請求,服務器回傳回應給瀏覽器,并在回應體中攜帶相關資訊供瀏覽器判斷是否跨站
2. 非簡單請求
例如PUT、DELETE、CONTENT-TYPE:aplication/Json
非簡單請求會在正式通信之前,使用options方法發起一個預檢請求到服務器,瀏覽器先詢問服務器當前網頁所在的域名是否在服務器的許可名單中,以及可以使用那些HTTP方法和頭資訊欄位,只有得到肯定答復,瀏覽器才會發出正式的XHR請求,否則報錯,
跨域手段
- AJAX請求跨域
由瀏覽器和服務器根據HTTP頭域或Access-control開頭相關欄位協商處理
2. JSONP跨域
利用script或img等標簽能夠跨域加載來實作,瀏覽器通過GET方法加載這些標簽(業務對于一些重要的請求,不能夠使用get方法提交資料,必須使用post方法,這樣就無法利用JSONP進行跨域請求)
3. 服務器轉發
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/3985.html
標籤:HTML5
