HTTP 協議

HTTP的特性

  • HTTP構建於TCP/IP協議之上,默認端口號是80
  • HTTP是無連接無狀態

HTTP報文

請求報文

HTTP 協議是以 ASCII 碼傳輸,建立在 TCP/IP 協議之上的應用層規範。規範把 HTTP 請求分爲三個部分:狀態行、請求頭、消息主體。類似於下面這樣:

<method> <request-URL> <version>
<headers>

<entity-body>

HTTP定義了與服務器交互的不同方法,最基本的方法有4種,分別是GETPOSTPUTDELETEURL全稱是資源描述符,我們可以這樣認爲:一個URL地址,它用於描述一個網絡上的資源,而 HTTP 中的GETPOSTPUTDELETE就對應着對這個資源的查,增,改,刪4個操作。

  1. GET用於信息獲取,而且應該是安全的 和 冪等的。

    所謂安全的意味着該操作用於獲取信息而非修改信息。換句話說,GET 請求一般不應產生副作用。就是說,它僅僅是獲取資源信息,就像數據庫查詢一樣,不會修改,增加數據,不會影響資源的狀態。

    冪等的意味着對同一URL的多個請求應該返回同樣的結果。

    GET請求報文示例:

     GET /books/?sex=man&name=Professional HTTP/1.1
     Host: www.example.com
     User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
     Gecko/20050225 Firefox/1.0.1
     Connection: Keep-Alive
  2. POST表示可能修改變服務器上的資源的請求。

     POST / HTTP/1.1
     Host: www.example.com
     User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
     Gecko/20050225 Firefox/1.0.1
     Content-Type: application/x-www-form-urlencoded
     Content-Length: 40
     Connection: Keep-Alive
    
     sex=man&name=Professional
  3. 注意:

    • GET 可提交的數據量受到URL長度的限制,HTTP 協議規範沒有對 URL 長度進行限制。這個限制是特定的瀏覽器及服務器對它的限制
    • 理論上講,POST 是沒有大小限制的,HTTP 協議規範也沒有進行大小限制,出於安全考慮,服務器軟件在實現時會做一定限制
    • 參考上面的報文示例,可以發現 GET 和 POST 數據內容是一模一樣的,只是位置不同,一個在URL裏,一個在 HTTP 包的包體裏



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