一、get是最多見的請求類型,經常使用於向服務器查詢某些信息,必要時能夠將查詢字符串參數追加到url的末尾,以便將信息發送給服務器。json
對XHR來講位於傳入open()方法的url末尾的查詢字符串必須通過正確的編碼才行。跨域
二、post請求瀏覽器
使用頻率僅次於get請求,一般用於向服務器發送應該被保存的數據,post請求應該把數據做爲請求的主體提交,而get請求傳統上不是這樣。post請求的主體能夠包含很是多的數據,並且格式不限。服務器
跨域源資源共享:cors
cors:使用自定義的http頭部讓瀏覽器與服務器進行溝通,從而決定請求或響應應該成功仍是失敗。在發送請求時須要給它附加一個額外的origin頭部函數
IE對cors的實現:引入了XDR類型post
其餘跨域技術jsonp
一、圖像ping編碼
動態建立圖像常常用於圖像ping,圖像ping 是與服務器進行簡單、單向的跨域通訊的一種方式。請求的數據是經過查詢字符串的形式發送的,而相應能夠是任意內容,但一般是像素圖或204響應。經過圖像ping瀏覽器得不到任何具體的數據,可是經過偵聽load和error事件,能知道響應是何時接收到的。url
二、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);