文章目錄
歡迎訪問筆者個人技術博客:http://rukihuang.xyz/
一、HTTP概述
- 超文本傳輸協議(Hyper Text Transfer Protocol)
- 用於從萬維網服務器傳輸超文本到本地瀏覽器的傳輸協議
- HTTP協議是基於TCP的應用層協議,它不關心數據傳輸的細節,主要是用來規定客戶端和服務器的數據傳輸格式,最初是用來向客戶端傳輸HTML頁面的內容。默認端口是80。
- http是基於請求與響應模式的、無狀態的、應用層的協議。
二、HTTP請求報文
2.1 請求報文概述(Request)
- HTTP請求報文主要由四部分組成
- 請求行:
- 請求頭:附加的信息,需要服務器知道的一些信息
- 空一行
- 請求體(
get
請求方式沒有請求體,post
請求體中存放需要提交的數據)
2.2 請求行
2.2.1 請求方法(Request Method)
請求方法 | 描述 |
---|---|
GET | 請求資源 |
POST | 提交資源 |
Head | 獲取響應頭 |
PUT | 替換資源 |
DELETE | 刪除資源 |
OPTIONS | 允許客戶端查看服務器的性能 |
TRACE | 回顯服務器收到的請求,用於測試或診斷 |
CONNECT | HTTP/1.1協議中預留給能夠將連接改爲管道方式的代理服務器 |
2.2.2 URL
- 統一資源定位符:Uniform Resource Locator
- 用於描述網上的資源
- 格式:
schema://hosr[:port]/path/.../[?query-string]
schema
:協議,如http,https,ftphost
:域名或者ip地址port
:端口path
:資源路徑query-string
:發送的參數
2.3 請求頭(Request Header)
請求頭 | 描述 |
---|---|
Host | 主機ip地址或域名 |
User-Agent | 客戶端相關信息,如操作系統、瀏覽器等信息 |
Accept | 指定客戶端接收信息類型,如image/jpg,text/html,application/json |
Accept-Charset | 客戶端接收的字符集,如gb2312,iso-8859-1 |
Accept-Encoding | 可接受的內容編碼,如gzip |
Accept-Language | 接收的語言,如Accept-Language:zh-cn |
Authorization | 客戶端提供給服務端,進行權限認證的信息 |
Cookie | 攜帶的cookie信息 |
Referer | 當前文檔的URL,即從哪個鏈接過來的 |
Content-Type | 請求體內容類型,如Content-Type:application/json |
Content-Length | 數據長度 |
Cache-Control | 緩存機制,如Cache-Control:no-cache |
Pragma | 放置頁面被緩存,和Cache-Control:no-cache作用一樣 |
三、HTTP響應報文
3.1 響應報文概述(Response)
- HTTP響應報文主要有四部分組成
- 響應行(狀態行)
- 響應頭
- 空行
- 響應體(正文)
3.2 狀態碼(Status Code)
- 狀態碼用以表示網頁服務器HTTP響應狀態的3位數字代碼
狀態碼 | 描述 |
---|---|
1xx | 提示信息,請求被成功接收(中間狀態,一般觀察不到) |
2xx | 成功,請求被成功處理(200 ok) |
3xx | 重定向相關(304 緩存) |
4xx | 客戶端錯誤(404 資源路徑有誤) |
5xx | 服務器端錯誤(500 程序有錯) |
3.3 響應頭(Response Header)
響應頭 | 描述 |
---|---|
Server | HTTP服務器的軟件信息 |
Date | 響應報文的時間 |
Expires | 指定緩存過期時間 |
Set-Cookie | 設置cookie |
Last-Modified | 資源最後修改時間 |
Content-Type | 響應的類型和字符集,如ContentType:text/html;Charset=utf-8 |
Content-Length | 內容長度 |
Connection | 如Keep-Alive,表示保持tcp連接不關閉,不會永久保持連接,服務器可設置 |
Location | 指明重定向的位置,新的url地址,如304情況 |