前端必備HTTP技能之請求頭響應頭格式以及請求方法簡述
請求頭響應頭格式
http協議中,客戶端和服務端通過發送純文本(ASCII)消息的方式進行通信,客戶端發送請求(requests)到服務端,服務端發送響應(responses)到客戶端。
請求消息格式
1.請求行,例如:GET /images/logo.png HTTP/1.1
2.請求頭,例如:Accept: text/plain
3.空行
4.可選擇的請求體
例子:
GET /index.html HTTP/1.1
Host: www.example.com
響應消息格式
1.包含狀態碼的狀態行,例如:HTTP/1.1 200 OK
2.響應頭,例如:Content-Type: text/html
3.空行
4.可選擇的消息體
例子:
HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Content-Type: text/html; charset=UTF-8
Content-Encoding: UTF-8
Content-Length: 138
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
ETag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Connection: close
<html> <head> <title>An Example Page</title> </head> <body> Hello World, this is a very simple HTML document. </body> </html>
請求方法
為了標識特定資源需要特定的行為訪問,HTTP協議定義了多種請求方法。這種特定資源是什么樣的,是已有的數據,還有動態生成的?主要依賴于服務端實現。通常來說這種資源對應一個文件或者屬于服務端的一個可執行輸出。
HTTP/1.0規范定義三種請求方法:GET, POST, HEAD。HTTP/1.1規范又增加了五種:OPTIONS, PUT, DELETE, TRACE,CONNECT。
GET
用來請求特定資源,規范規定使用GET方法應該只是用來獲取數據,不能有其他行為。其他HTTP方法也有類似準則,實際就是規范定義的每種HTTP方法的作用很單一,不建議在HTTP方法上應用其他行為。
HEAD
和GET請求類似,但是HEAD請求的響應體中不應該包含響應體,只是用來獲取響應頭中的元信息,這樣就不用傳輸整個響應內容,節省流量。
POST
請求服務端接受請求體中的整個實體作為給定URI資源的一部分,這些實體可以是表單數據,數據庫中的項,新聞組,郵件列表,評論等。
PUT
請求把封閉的實體存儲在給定的URI下,如果這個URI對應的資源已經存在,那么會修改這個資源;如果這個URI對應的資源不存在,服務器會根據URI創建一個新資源。
DELETE
請求刪除指定資源。
TRACE
請求打印接受到的請求,這樣客戶端就可以看到中間服務做了哪些改變或者新增了哪些東西。
OPTIONS
請求返回針對特定URL服務器支持哪些HTTP方法,這樣可以用來檢查web服務器的功能,通過請求 * 而不是特定資源的方式。
CONNECT
請求把連接轉成透明的TCP/IP通道,通常用于使用非加密的HTTP代理實現HTTPS。
PATCH
適用于修改資源的一部分。
在規范中定義的這些請求方法是語義化的,并且是可依賴的。任何客戶端都可以使用任何請求方法,服務端也可以配置成支持任何這些請求方法的組合。
實際上這些請求方法可以隨意定義,沒有數量限制,不過你自己定義出來的請求方法會被認為是不安全并且是非冪等的。
總結:這些請求方法本質上沒有區別,最終都是TCP請求,唯一的區別就是每個請求方法,使用的時候,規范規定的使用格式不同,原則上必須按照規范規定的格式使用,其實也可以違反規范使用,比如你可以使用GET方法請求數據,也可以使用GET方法提交數據,當然你可以用POST方法提交數據,也可以用POST方法獲取數據。
來自:http://www.jianshu.com/p/39e693cfa34a