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

資訊專欄INFORMATION COLUMN

關于跨域的總結

lunaticf / 3007人閱讀

摘要:關于跨域,個人總結了以下幾種方法其中等方法常用,的方法既不復雜,也能兼容到幾乎所有瀏覽器,這真是極好的一種跨域方法。這個主要針對跨域訪問的情況兩個網頁一級域名相同,只是二級域名不同,瀏覽器允許通過設置共享。

關于跨域,個人總結了以下幾種方法

JSONP

CORS

WebSocket

document.domain

window.name

location.hash

postMessage

其中:CORS、jsonp等方法常用,window.name的方法既不復雜,也能兼容到幾乎所有瀏覽器,這真是極好的一種跨域方法。

webSocket

WebSocket是一種在單個TCP連接上進行全雙工通訊的協議。WebSocket與HTTP協議其實兩者的關系像是兩兄弟,各自有著各自擅長的領域,而且時不時還一同協作解決難題。
WebSocket要解決的問題:當服務器資源到位時,能夠主動通知瀏覽器并返回相應資源。HTML5標準推出了WebSocket協議。
本身就不受瀏覽器“同源策略”的限制,WebSocket協議下的通訊機制,客戶端和服務端一旦建立連接,就可以順暢的互發數據,因此WebSocket協議本身就是“有狀態的”,不需要Cookie的幫忙,既然沒有Cookie,自然也不需要“同源策略”去保護。
下面來說說webSocket的具體實現:
像發起AJAX請求一樣,發起WebSocket請求需要借助瀏覽器提供的WebSocket對象,該對象提供了用于創建和管理WebSocket連接,以及通過該連接收發數據的API。所有的瀏覽器都默認提供了WebSocket對象。讓我們看看該對象的用法:

和使用XHRHttpRequest對象一樣,我們首先要實例化一個WebSocket對象:

傳入的參數為響應WebSocket請求的地址。

同樣類似AJAX的是,WebSocket對象也有一個readyState屬性,用來表示對象實例當前所處的鏈接狀態,有四個值:

0:表示正在連接中(CONNECTING);
1:表示連接成功,可以通信(OPEN);
2:表示連接正在關閉(CLOSING);
3:表示連接已經關閉或打開連接失敗(CLOSED);
我們可以通過判斷這個值來執行我們相應的代碼。

除此之外,WebSocket對象還提供給我們一系列事件屬性,使我們控制連接過程中的通信行為:

onopen:用于指定連接成功后的回調函數;
onclose:用于指定連接關閉后的回調函數;
onmessage:用于指定收到服務器數據后的回調函數;
onerror:用于指定報錯時的回調函數;
通過.send()方法,我們擁有了向服務器發送數據的能力(WebSocket還允許我們發送二進制數據)。

如何知道何時我們的數據發送完畢呢?我們需要使用WebSocket對象的bufferedAmount屬性,該屬性的返回值表示了還有多少字節的二進制數據沒有發送出去,所以我們可以通過判斷該值是否為0而確定數據是否發送結束。

CORS

阮一峰博客http://www.ruanyifeng.com/blo...
在http header中寫入允許訪問的域名。
Access-Control-Allow-Origin,該字段是必須的。它的值要么是請求時Origin字段的值,要么是一個*,表示接受任意域名的請求。
需要注意的是:CORS請求默認情況下是不會發送cookie的,所以需要在服務器的響應中設置:
Access-Control-Allow-Credentials: true
除此之外,還需要在AJAX請求中設置:
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
CORS請求分為簡單請求和非簡單請求:
簡單請求:需要AJAX里的onerrer回調函數進行捕獲,因為也可能會返回200。
非簡單請求:瀏覽器先詢問服務器,當前網頁所在的域名是否在服務器的許可名單之中,以及可以使用哪些HTTP動詞和頭信息字段。只有得到肯定答復,瀏覽器才會發出正式的XMLHttpRequest請求,否則就報錯。
會首先發送一個預檢請求,請求方法為:options,并且在請求頭中會包含相應字段:
Access-Control-Request-Method
Access-Control-Request-Headers
如果響應頭中有CORS相關字段:
Access-Control-Allow-Origin
Access-Control-Allow-Methods
Access-Control-Allow-Headers
瀏覽器檢查響應頭中包含這三個字段,則預檢請求成功;否則,則會拋出錯誤。一旦服務器通過了"預檢"請求,以后每次瀏覽器正常的CORS請求,就都跟簡單請求一樣,會有一個Origin頭信息字段。服務器的回應,也都會有一個Access-Control-Allow-Origin頭信息字段。

JSONP

我們發現,Web頁面上調用js文件時則不受是否跨域的影響(不僅如此,我們還發現凡是擁有”src”這個屬性的標簽都擁有跨域的能力,比如

閱讀需要支付1元查看
<