淺析get與post請求

    在客戶機和服務器之間進行請求-響應時,兩種最常被用到的方法是:GET 和 POST。

  • GET - 從指定的資源請求數據。
  • POST - 向指定的資源提交要被處理的數據。

   兩者在應用上是有一些區別的:

        1、Get 是用來從服務器上獲得數據,而 Post 是用來向服務器上傳遞數據。

         2、Get 將表單中數據的按照 variable=value 的形式,添加到 action 所指向的 URL 後面,並且兩者使用“?”連接,而各個變量之間使用“&”連接;Post 是將表單中的數據放在 form 的數據體中,按照變量和值相對應的方式,傳遞到 action 所指向 URL。

        (1):如果表單是以GET方式將數據發送到服務端,那麼會將用戶在表單中輸入的數據放在瀏覽器的地址欄中發送到服務端。

URL 格式:http://localhost:2454/RequestMethod/AddInfo.ashx?txtName=itcast&txtPwd=123

  以表單元素name屬性的值=用戶輸入的值 &  以表單元素name屬性的值=用戶輸入的值。

  在AddInfo.ashx文件中怎樣接收數據?  在服務端接收數據 string userName=context.Request.QueryString["txtName"];//接收的是表單元素name屬性的值 string userPwd=context.Request.QueryString["txtPwd"];

       (2):如果數據是以post提交,URL的格式:http://localhost:2454/RequestMethod/AddInfo.ashx。那麼表單中的數據全部都放在請求報文的請求體中,txtName=itcast&txtPwd=123【具體進行操作】(谷歌進入報文F12,→NetWork)

在服務端文件接收的時候 string userName = context.Request.Form["txtName"];string userPwd = context.Request.Form["txtPwd"];

         3、Get 是不安全的,因爲在傳輸過程,數據被放在請求的 URL 中,而如今現有的很多服務器、代理服務器或者用戶代理都會將請求URL記錄到日誌文件中,然後放在某個地方,這樣就可能會有一些隱私的信息被第三方看到。另外,用戶也可以在瀏覽器上直接看到提交的數據,一些系統內部消息將會一同顯示在用戶面前。Post 的所有操作對用戶來說都是不可見的。

         4、Get 傳輸的數據量小,這主要是因爲受 URL 長度限制;而 Post 可以傳輸大量的數據,所以在上傳文件只能使用 Post(當然還有一個原因,將在後面的提到)。

         5、Get 限制 Form 表單的數據集的值必須爲 ASCII 字符;而 Post 支持整個 ISO10646 字符集。

         6、Get 是 Form 的默認方法。

     如何區分兩種請求方式:

      1)在瀏覽器地址中直接輸入地址,敲回車,也是向服務器發送GET請求。

      2)單擊超鏈接也是GET請求。

      3)post只有將表單中的method改成post這一種請求。

                此鏈接博客對Get和Post又進行深一層剖析

        鏈接博客中提到了GET和POST還有一個重大區別,簡單的說:

        GET產生一個TCP數據包;POST產生兩個TCP數據包。

                                 什麼是TCP數據包呢?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章