一、URL組成
<protocol>://<host>[:port]/[path][?query][#fragment]
- protocol: URL協議,常見的有http,https,ftp等等
- host: 主機名,即服務器名稱。DNS會將這個名稱解析爲具體IP地址
- [:port] 端口號,一般省略使用默認端口,通常在開發和調試時纔會使用自定義端口
- [path] URL路徑,指向服務器上的具體資源。
- [?query] 查詢字符串,多個參數使用“&”分隔,查詢字符串發送給服務器,由服務器上的應用決定如何處理。
- [#fragment] 錨部分,指明一個資源的特定位置,由瀏覽器處理。
二、媒體類型-Content Type
類型 |
描述 |
示例 |
text |
普通文本 |
text/plain、text/html、text/javascript、text/css |
image |
圖片 |
image/gif、image/jpg、image/webp、image/bmp |
audio |
音頻 |
audio/ogg、audio/wav |
video |
視頻 |
video/ogg、video/webm |
application |
二進制數據等 |
application/json、application/xml、application/pdf |
三、HTTP消息
- 起始行(請求)/狀態行(響應):用於描述要執行的請求或對應的狀態。
- HTTP消息頭:請求或響應的相關屬性、配置、描述等
- 空行:指明消息頭已經發送完畢
- 消息正文(可以爲空):包含請求數據或響應中資源的表述
四、HTTP方法
方法 |
作用 |
安全性 |
冪等性 |
GET |
獲取資源 |
是 |
否 |
POST |
創建資源 |
否 |
否 |
PUT |
更新指定資源 |
否 |
是 |
PATCH |
部分更新資源 |
否 |
否 |
DELETE |
刪除資源 |
否 |
是 |
HEAD |
獲取資源,響應中沒有消息正文 |
是 |
是 |
OPTION |
獲取指定資源所支持的操作 |
是 |
是 |
五、HTTP消息頭
- 常用請求頭
消息頭 |
說明 |
Accept |
可接受的響應內容類型 |
Accept-Charset |
可接受的字符集 |
Accept-Encoding |
可接受的響應內容編碼方式 |
Accept-Language |
可接受的響應內容語言列表 |
Authorization |
協議中需要認證資源的認證信息 |
Cache-Control |
是否使用緩存 |
Connection |
客戶端連接類型 |
Cookie |
向服務器提供Cookie |
Content-Length |
請求正文的長度 |
Content-Type |
請求正文的MIME類型 |
Host |
主機名及端口號 |
If-Match |
僅當客戶端與服務器匹配時,才進行操作 |
If-Modified-Since |
當請求資源未被修改時返回304狀態碼 |
If-None-Match |
當請求資源未被修改時返回304狀態碼 |
If-Unmodified-Since |
當資源自某個特定時間以來未被修改時才發送響應 |
Origin |
發起跨域資源共享請求 |
User-Agent |
瀏覽器身份標識 |
- 常用響應頭
消息頭 |
說明 |
Allow |
指明資源支持的有效操作 |
Cache-Control |
響應緩存機制 |
Connection |
該連接預期選項 |
Content-Length |
響應正文的長度 |
Content-Type |
響應正文的MIME類型 |
Content-Encoding |
響應正文的編碼類型 |
Content-Language |
響應正文語言 |
ETag |
資源當前狀態的標識符 |
Expires |
指定時間,超過則認爲響應過期 |
Last-Modified |
資源最後修改日期 |
Location |
指向另一個URI,用於重定向和創建新資源時使用 |
Server |
服務器名稱 |
Set-Cookie |
設置Cookie |
WWW-Authenticate |
請求應使用的認證方式 |
六、狀態碼
HTTP響應狀態碼由3個數字組成,指明HTTP請求結果,可分爲5大類
- 1xx:請求
- 2xx: 成功
- 3xx: 重定向
- 4xx: 客戶端錯誤
- 5xx: 服務端錯誤
常見狀態碼
狀態碼 |
名稱 |
200 |
OK |
201 |
Created |
204 |
No Content |
304 |
Not Modified |
400 |
Bad Request |
401 |
Unauthorized |
403 |
Forbidden |
404 |
Not Found |
405 |
Method Not Allowed |
406 |
Not Acceptable |
500 |
Internal Server Error |