1. 程式人生 > >POST和GET請求區別 POST和GET請求區別

POST和GET請求區別 POST和GET請求區別

 

1. 請求長度的限制

        在HTTP協議中,從未規定GET/POST的請求長度限制,對於GET,對url的限制來源於瀏覽器或web伺服器,瀏覽器和伺服器限制了url的長度。因此,在使用GET請求時,傳輸資料會受到URL長度的限制。對於POST,由於沒有url傳值,理論上是不會受到限制的,但是實際上各個伺服器會對POST提交的資料大小進行限制,Apache、IIS都有各自的配置。如果支援IE,則最大長度為2083byte,若只支援Chrome,則最大長度 8182byte。

2. 安全性的區別

        POST的安全性比GET的高。這裡的安全是指真正的安全,而不同於上面GET提到的安全方法中的安全,上面提到的安全僅僅是不會修改伺服器的資料。比如,在進行登入操作,通過GET請求,使用者名稱和密碼都會暴露在url上,因為登入頁面有可能被瀏覽器快取以及其他人檢視瀏覽器的歷史記錄的原因,此時的使用者名稱和密碼就很容易被他人拿到了。而對於POST方式,資料通過Request Body傳遞,除此之外,GET請求提交的資料還可能會造成CSRF攻擊。

3. 快取方面的區別

        GET請求類似於查詢的過程,使用者獲取資料,可以不用每次都與資料庫連線,所以可以使用快取。POST不同,POST做的一般是修改和刪除的工作,所以必須與資料庫互動,所以不能使用快取。因此GET請求適合於請求快取。

4. 獲取資料的區別

        GET是從伺服器上獲取資料,POST是向伺服器傳送資料。對於GET方式,伺服器用Request.QueryString獲取變數的值,對於POST方式,伺服器用Request.Form獲取提交的資料。

       以下是蒐集的GET與POST的主要區別:

  • GET在瀏覽器回退時是無害的,而POST會再次提交請求。
  • GET產生的URL地址可以被Bookmark,而POST不可以。
  • GET請求會被瀏覽器主動cache,而POST不會,除非手動設定。
  • GET請求只能進行url編碼,而POST支援多種編碼方式。
  • GET請求引數會被完整保留在瀏覽器歷史記錄裡,而POST中的引數不會被保留。
  • GET請求在URL中傳送的引數是有長度限制的,而POST麼有(原因是瀏覽器和伺服器的限制)。
  • GET產生一個TCP資料包;POST產生兩個TCP資料包(Firefox除外)。
  • 對引數的資料型別,GET只接受ASCII字元,而POST沒有限制。
  • GET比POST更不安全,因為引數直接暴露在URL上,所以不能用來傳遞敏感資訊。
  • GET引數通過URL傳遞,POST放在Request body中。

 轉自  POST和GET請求區別

 參考連結:詳解post 和 get 的區別

1. 請求長度的限制

        在HTTP協議中,從未規定GET/POST的請求長度限制,對於GET,對url的限制來源於瀏覽器或web伺服器,瀏覽器和伺服器限制了url的長度。因此,在使用GET請求時,傳輸資料會受到URL長度的限制。對於POST,由於沒有url傳值,理論上是不會受到限制的,但是實際上各個伺服器會對POST提交的資料大小進行限制,Apache、IIS都有各自的配置。如果支援IE,則最大長度為2083byte,若只支援Chrome,則最大長度 8182byte。

2. 安全性的區別

        POST的安全性比GET的高。這裡的安全是指真正的安全,而不同於上面GET提到的安全方法中的安全,上面提到的安全僅僅是不會修改伺服器的資料。比如,在進行登入操作,通過GET請求,使用者名稱和密碼都會暴露在url上,因為登入頁面有可能被瀏覽器快取以及其他人檢視瀏覽器的歷史記錄的原因,此時的使用者名稱和密碼就很容易被他人拿到了。而對於POST方式,資料通過Request Body傳遞,除此之外,GET請求提交的資料還可能會造成CSRF攻擊。

3. 快取方面的區別

        GET請求類似於查詢的過程,使用者獲取資料,可以不用每次都與資料庫連線,所以可以使用快取。POST不同,POST做的一般是修改和刪除的工作,所以必須與資料庫互動,所以不能使用快取。因此GET請求適合於請求快取。

4. 獲取資料的區別

        GET是從伺服器上獲取資料,POST是向伺服器傳送資料。對於GET方式,伺服器用Request.QueryString獲取變數的值,對於POST方式,伺服器用Request.Form獲取提交的資料。

       以下是蒐集的GET與POST的主要區別:

  • GET在瀏覽器回退時是無害的,而POST會再次提交請求。
  • GET產生的URL地址可以被Bookmark,而POST不可以。
  • GET請求會被瀏覽器主動cache,而POST不會,除非手動設定。
  • GET請求只能進行url編碼,而POST支援多種編碼方式。
  • GET請求引數會被完整保留在瀏覽器歷史記錄裡,而POST中的引數不會被保留。
  • GET請求在URL中傳送的引數是有長度限制的,而POST麼有(原因是瀏覽器和伺服器的限制)。
  • GET產生一個TCP資料包;POST產生兩個TCP資料包(Firefox除外)。
  • 對引數的資料型別,GET只接受ASCII字元,而POST沒有限制。
  • GET比POST更不安全,因為引數直接暴露在URL上,所以不能用來傳遞敏感資訊。
  • GET引數通過URL傳遞,POST放在Request body中。

 轉自  POST和GET請求區別

 參考連結:詳解post 和 get 的區別