前端必備HTTP技能之請求頭響應頭格式以及請求方法簡述

JacintoCole 8年前發布 | 24K 次閱讀 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

 

 本文由用戶 JacintoCole 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!