get請求與post,跨域

一、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);
相關文章
相關標籤/搜索