HTTP請求中的GET-POST方式


一、前言部分(概念)

  • URL(統一資源定位符 )的作用:使用 URL 可以確定一個資源所在的位置

  • HTTP(超文本傳輸協議)

    • 基於 TCP/IP 的定義數據在萬維網中如何通信的協議

    • 設計目的是保證客戶端與服務器之間的通信

  • 在客戶端向服務器發起請求時,兩種最常用的 HTTP 方法是:GET 和 POST

  • 在 html 頁面的 form 表單中,如果不指定 method 提交方式,默認是以 GET 方式提交

二、對比 GET 與 POST

二者最大的差異

請求參數所在的位置不同

  • GET 方式把參數包含在URL,即請求行中,參數會顯示在瀏覽器地址欄上

  • POST 方式的參數包含在請求體中

正是因為請求參數所在的位置不同,從而造成了:

  1. GET 請求時 URL 長度受限(理論上get請求只能攜帶2k大小的數據)

  2. POST 請求提交參數的相對安全

這里的相對安全只是單純地因為 post 請求參數包含在請求體中,不會顯示在地址欄上被看到

GET 與 POST 請求本質上並無區別

因為 GET 和 POST兩種請求方式都是基於 TCP 協議

差異的產生就如第一點所說,請求參數所在的位置不同。而瀏覽器和web服務器又限制了 URL 的長度,

為什么限制URL的長度?

服務器是因為處理長 URL 要消耗比較多的資源,為了性能和安全(防止惡意構

造長 URL 來攻擊)考慮,會給 URL 長度加限制。

深層了解:POST 請求產生兩個數據包?

GET 產生一個 TCP 數據包,POST 產生兩個 TCP 數據包

其實並不是所有瀏覽器都會在 POST 請求中發送兩次包,Firefox 就只發送一次

兩次發包並不是 POST 的必然性,只是因瀏覽器軟件而異

三、兩種請求方式如何靈活使用?

GET - 從指定的資源請求獲取數據。

POST - 向指定的資源提交要被處理的數據

當數據量較大的請求(提交表單、上傳文件)時,傳遞密碼及隱私內容時采用POST;

其余情況可用get。

使用 GET 請求如果需要傳遞參數,那么參數只能通過以下方式傳遞:

url?參數名=參數值&參數名=參數值
add.do?name=value&name=value

四、常見的狀態碼

在 HTTP 請求中,通過狀態碼可以清晰的看到請求的結果,如果請求出錯,可以通過狀態碼來鎖定問題所在

HTTP協議中提供了許多的狀態碼,列舉我們常見的:
200 OK           返回正常
302 Found        重定向,讓瀏覽器跳轉到其它地址
304 Not Modified 服務端資源無變化,可使用緩存資源
400 Bad Request  請求參數不合法
401 Unauthorized 請求需要用戶的身份認證
403 Forbidden    服務端禁止訪問該資源
404 Not Found    服務端未找到該資源
408 Request Time-out       服務器等待客戶端發送的請求時間過長,超時
415 Unsupported Media Type 服務器無法處理請求附帶的媒體格式
500 Internal Server Error  服務端異常

五、RESTful 風格補充

RESTful風格中,常用的方法有4種,分別是GET,POST,PUT,DELETE。URL 定位了這個資源,HTTP中的GET,POST,PUT,DELETE就是對應着對這個資源的查,増,改,刪4個操作。

參考鏈接


免責聲明!

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



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