国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

前端跨域解決方案

JouyPub / 1760人閱讀

摘要:跨域源資源共享同源域名端口協議均相同基本思想是使用自定義的頭部,讓服務器能聲明允許訪問的來源。簡單請求所有的跨域請求簡單或非簡單總會包含一個的請求頭部由瀏覽器添加不受用戶控制。

跨域源資源共享

同源:域名、端口、協議均相同
CORS基本思想是使用自定義的HTTP頭部,讓服務器能聲明允許訪問的來源。
使用CORS時,異步請求會被分為簡單請求(非Preflight)和非簡單請求。

簡單請求

所有的跨域請求(簡單或非簡單)總會包含一個origin的請求頭部,由瀏覽器添加不受用戶控制。值由協議、域名、端口組成,說明請求的來源。下面為一個Origin頭部示例:

Origin:http://www.hello.com

服務器接受這個請求,會在響應頭Access-Control-Allow-Origin回發相同的源信息。( * 表明該資源可以被任意外域訪問)

Access-Control-Allow-Origin:http://www.hello.com
非簡單請求

非簡單CORS請求會在正式請求之前發送一次Preflight請求,得到確認之后才會發送真正的XMLHttpRequest請求。瀏覽器自動處理這兩個請求,并且Preflight請求結束后,結果將按照響應中指定的時間緩存起來.所以只是第一次發送這種請求時會多一次HTTP請求.
Preflight請求使用OPTIONS方法,發送下列頭部:

Origin:與簡單請求相同
Access-Control-Request-Method:請求自身使用的方法

以下是一個帶有自定義頭部Custom-Header的使用POST方法發送的請求.

Origin:http://www.hello.com
Access-Control-Request-Method:POST
Access-Control-Request-Headers:Custom-Header
var url = "http://www.hello.com";
var xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
xhr.setRequestHeader("Custom-Header", "value");
xhr.send();

服務器通過在響應中發送如下頭部與瀏覽器溝通:

Access-Control-Allow-Origin:http://www.hello.com
Access-Control-Allow-Methods:POST,GET
Access-Control-Allow-Headers:Custom-Header
Access-Control-Allow-Max-Age:28000  //表示將Preflight緩存的時長(秒),期間內無需再次發送預請求

另外通過將XMLHttpRequest的withCredentials屬性設置為true就可以發送帶憑據(cookie、HTTP認證、客戶端SSL證明等)的跨域請求.

var xhr=new XMLHttpRequest();
xhr.withCredentials=true;

如果服務器接受帶憑據的請求會用下面的HTTP頭部響應:

Access-Control-Allow-Credentials:true
JSONP(JSON with padding)

JSONP由兩部分組成:回調函數+數據,回調函數是當響應到來時應該在頁面中調用的函數,回調函數的名字一般是在請求中指定的.而數據就是傳入回調函數中的JSON數據.JSONP是通過動態

閱讀需要支付1元查看
<