ajax跨域請求

跨域問題
JS處於安全考慮使用了同源策略

Under the policy, a web browser permits scripts contained in a first web page to access data in a second web page, but only if both web pages have the same origin. An origin is defined as a combination of URI scheme, hostname, and port number.

就是說,使用同源策略的時候若一個頁面請求另外一個頁面的數據,就要保證這兩個頁面同源。同源的標準是同一協議,同一域名,同一端口

這裏寫圖片描述

跨域方式

JSONP

在JS中,標籤中包含src屬性的都是可以跨域的。所以可以通過動態生成<script>標籤進行跨域請求。
方式如下
這裏寫圖片描述

但是JSONP**只支持GET請求以及Javascript的返回類型。**

CORS

文章:http://www.ruanyifeng.com/blog/2016/04/cors.html
原理就是瀏覽器在發送請求時會添加一個Origin頭部,用來說明本次請求來自哪個源(協議 + 域名 + 端口)。
若服務端允許該請求,就會發送一個Access-Control-Allow-Origin,用於指示來自允許來自哪個域名的請求。
CORS跨域都是瀏覽器自動添加頭部信息的,基本不要寫上什麼特定的信息。
COR分簡單請求非簡單請求

簡單請求

這裏寫圖片描述
可以看到簡單請求只能是GET、POST、HEAD且不能有自定義的頭部信息。

非簡單請求

非簡單請求的CORS請求,會在正式通信之前,增加一次HTTP查詢請求,稱爲”預檢”請求(preflight)。
瀏覽器先詢問服務器,當前網頁所在的域名是否在服務器的許可名單之中,以及可以使用哪些HTTP動詞和頭信息字段。只有得到肯定答覆,瀏覽器纔會發出正式的XMLHttpRequest請求,否則就報錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章