請求類型 GET 和 POST 的區別


一、GET

一個簡單的 GET 請求:

xmlhttp.open("GET","demo_get.asp",true);
xmlhttp.send();

在上面的例子中,可能得到的是緩存的結果。

為了避免這種情況,需要向 URL 添加一個唯一的 ID:

xmlhttp.open("GET","demo_get.asp?t=" + Math.random(),true);
xmlhttp.send();

如果通過 GET 方法發送信息,要為 URL 添加信息:

xmlhttp.open("GET","demo_get2.asp?fname=Bill&lname=Gates",true);
xmlhttp.send();

另外,GET 請求具有以下的幾個特點: 

 

  • GET 請求可被緩存
  • GET 請求保留在瀏覽器歷史記錄中
  • GET 請求可被收藏為書簽
  • GET 請求不應在處理敏感數據時使用
  • GET 請求有長度限制
  • GET 請求只應當用於取回數據

 

二、POST

一個簡單 POST 請求:

xmlhttp.open("POST","demo_post.asp",true);
xmlhttp.send();

如果像 HTML 表單那樣 POST 數據,要用 setRequestHeader() 來添加 HTTP 頭,然后在 send() 方法中規定所要發送的數據

xmlhttp.open("POST","ajax_test.asp",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Bill&lname=Gates");

這里 setRequestHeader() 包含兩個參數 header 和 value,前者用來規定頭的名稱,后者規定頭的值。

另外,POST 請求具有以下的幾個特點:  

  • POST 請求不會被緩存 
  • POST 請求不會保留在瀏覽器歷史記錄中 
  • POST 請求不能被收藏為書簽
  • POST 請求對數據長度沒有要求

為什么 open 方法第三個參數 Async=true ?

  該參數規定請求是否異步處理,如果是異步通信方式(true),客戶機就不等待服務器的響應;如果是同步方式(false),客戶機就要等到服務器返回消息后才去執行其他操作

 

三、選 GET 還是選 POST?

與 POST 相比,GET 更簡單也更快,並且在大部分情況下都能用,然而,在以下情況中,必須用 POST 請求:

  • 無法使用緩存文件(更新服務器上的文件或數據庫)
  • 向服務器發送大量數據(POST 沒有數據量限制)
  • 發送包含未知字符的用戶輸入時,POST 比 GET 更穩定也更可靠
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM