HTTP的特性
- HTTP構建於TCP/IP協議之上,默認端口號是80
- HTTP是無連接無狀態的
HTTP報文
請求報文
HTTP 協議是以 ASCII 碼傳輸,建立在 TCP/IP 協議之上的應用層規範。規範把 HTTP 請求分爲三個部分:狀態行、請求頭、消息主體。類似於下面這樣:
<method> <request-URL> <version>
<headers>
<entity-body>
HTTP定義了與服務器交互的不同方法,最基本的方法有4種,分別是GET
,POST
,PUT
,DELETE
。URL
全稱是資源描述符,我們可以這樣認爲:一個URL
地址,它用於描述一個網絡上的資源,而 HTTP 中的GET
,POST
,PUT
,DELETE
就對應着對這個資源的查,增,改,刪4個操作。
-
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
-
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
-
注意:
- GET 可提交的數據量受到URL長度的限制,HTTP 協議規範沒有對 URL 長度進行限制。這個限制是特定的瀏覽器及服務器對它的限制
- 理論上講,POST 是沒有大小限制的,HTTP 協議規範也沒有進行大小限制,出於安全考慮,服務器軟件在實現時會做一定限制
- 參考上面的報文示例,可以發現 GET 和 POST 數據內容是一模一樣的,只是位置不同,一個在URL裏,一個在 HTTP 包的包體裏