1、get是最常見的請求類型,常用於向服務器查詢某些信息,必要時可以將查詢字符串參數追加到url的末尾,以便將信息發送給服務器。
對XHR來說位於傳入open()方法的url末尾的查詢字符串必須經過正確的編碼才行。
2、post請求
使用頻率僅次於get請求,通常用於向服務器發送應該被保存的數據,post請求應該把數據作為請求的主體提交,而get請求傳統上不是這樣。post請求的主體可以包含非常多的數據,而且格式不限。
跨域源資源共享:
cors:使用自定義的http頭部讓瀏覽器與服務器進行溝通,從而決定請求或響應應該成功還是失敗。在發送請求時需要給它附加一個額外的origin頭部
IE對cors的實現:引入了XDR類型
其他跨域技術
1、圖像ping
動態創建圖像經常用於圖像ping,圖像ping 是與服務器進行簡單、單向的跨域通信的一種方式。請求的數據是通過查詢字符串的形式發送的,而相應可以是任意內容,但通常是像素圖或204響應。通過圖像ping瀏覽器得不到任何具體的數據,但是通過偵聽load和error事件,能知道響應是什么時候接收到的。
2、jsonp
jsonp看起來與json差不多,只不過是被包含在函數調用中的JSON,就像下面這樣
callback({"name":"Nicholas"});
jsonp由兩部分組成:回調函數和數據。回調函數是當響應到來時應該在頁面中調用的函數。回調函數的名字一般是在請求中指定的。回調函數的名字一般是在請求中指定的,而數據就是傳入回調函數中的json數據,下面是一個典型的jsonp請求
http://freegeoip.net/json/?callback = handleResponse
jsonp是通過動態<script>元素來使用的,使用時可以為src屬性指定一個跨域url,這里的<script>與<img>元素類似,都有能力不受限制的從其它域加載資源,因為jsonp是有效的js代碼,所以在請求完成后,即在jsonp響應加載到頁面中以后就會立即執行。
function handleResponse(response){ alert('you are at ip address' + response.ip +",which is in"+response.city+","+response.region_name); } var script = document.createElement("script"); script.src = "http://freegeoip.net/json/?callback = handleResponse"; document.body.insertBefore(script,document.body.firstChild);