Http協議[Get和Post]詳解


HTTP 定義了與服務器交互的不同方法,最常用的有4種,Get、Post、Put、Delete,Put(增),Delete(刪),Post(改),Get(查),即增刪改查對於delete和put幾乎不用就不做介紹了:

1)Get, 它用於獲取信息,注意,他只是獲取、查詢數據,也就是說它不會修改服務器上的數據(在不考慮crsf的攻擊下),從這點來講,它是數據安全的,而稍后會提到的Post它是可以修改數據的,所以這也是兩者差別之一了。

2) Post,它是可以向服務器發送修改請求,從而修改服務器的,比方說,我們要在論壇上回貼、在博客上評論,這就要用到Post了,當然它也是可以僅僅獲取數據的

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

      GET 方法

      請注意,查詢字符串(名稱/值對)是在 GET 請求的 URL 中發送的:

      /test/demo_form.asp?name1=value1&name2=value2

      有關 GET 請求的其他一些注釋:

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

        請注意,查詢字符串(名稱/值對)是在 POST 請求的 HTTP 消息主體中發送的:

        POST /test/demo_form.asp HTTP/1.1
        Host: w3schools.com
        name1=value1&name2=value2
        

        有關 POST 請求的其他一些注釋:

        • POST 請求不會被緩存
        • POST 請求不會保留在瀏覽器歷史記錄中
        • POST 不能被收藏為書簽
        • POST 請求對數據長度沒有要求
        •  GET請求的數據是放在HTTP包頭中的,也就是URL之后,通常是像下面這樣定義格式的,(而Post是把提交的數據放在HTTP正文中的)。

          login.action?name=hyddd&password=idontknow&verify=%E4%BD%E5%A5%BD

          a,以 ? 來分隔URL和數據; 

          b,以& 來分隔參數;

          c,如果數據是英文或數字,原樣發送;

          d,如果數據是中文或其它字符,則進行BASE64編碼(只是其中的一種編碼方式還有很多)。  

          2)GET提交的數據比較少,最多1024B,因為GET數據是附在URL之后的,而URL則會受到不同環境的限制的,比如說IE對其限制為2K+35,而POST可以傳送更多的數據(理論上是沒有限制的,但一般也會受不同的環境,如瀏覽器、操作系統、服務器處理能力等限制,IIS4可支持80KB,IIS5可支持100KB)。

          3)Post的安全性要比Get高,因為Get時,參數數據是明文傳輸的,而且使用GET的話,還可能造成Cross-site request forgery攻擊。而POST數據則可以加密的,但GET的速度可能會快些。

          所以綜上幾點,總結成下表:

           

          操作方式

          數據位置

          明文密文

          數據安全

          長度限制

          應用場景

          GET

          HTTP包頭

          明文

          不安全

          長度較小

          查詢數據

          POST

          HTTP正文

          可明可密

          安全

          支持較大數據傳輸

          修改數據

           

          • 總結

            用GET和POST訪問http資源---

            ·GET請求請提交的數據放置在HTTP請求協議頭(也就是url)中,而POST提交的數據則放在實體數據中,安全性比較高。
            ·GET方式提交的數據最多只能有1024字節,而POST則沒有此限制

              兩種方法,只是傳送數據的方式不同。根據不同的服務器規定的請求訪問方式,靈活的運行Get和Post。


免責聲明!

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



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