作者:
極客小俊
一個把邏輯思維轉(zhuǎn)變?yōu)榇a的技術(shù)博主
前言
居然有人干了5年開發(fā)辨萍,抓包都不會!??
但是不要怕近忙,不要哭骄酗,跟著我學一定有收獲! 興趣就是你最好的老師邦邦,有興趣就一定要學下去 ,卷死他們!??
溫馨提示:全程干貨安吁、內(nèi)容比較多,建議新手朋友可以先點贊+收藏再慢慢觀看!
??
Fiddler是什么?
在正式學習Fiddler
之前燃辖, 我們還是要對Fiddler
有一個初步的認識!
Fiddler
是以web proxy
代理服務器的形式工作的 , 它也是一個http協(xié)議
數(shù)據(jù)抓包與調(diào)試代理工具鬼店,它能夠記錄
和檢查
當前你的電腦和互聯(lián)網(wǎng)之間的http
消息, 也就是說可以將網(wǎng)絡(luò)傳輸發(fā)送與接受
的數(shù)據(jù)包
進行截獲、重發(fā)黔龟、編輯妇智、轉(zhuǎn)存
等操作 還可以用來檢測網(wǎng)絡(luò)安全魂迄。 是不是感覺很強大!??
Fiddler主要能干什么?
Fiddler
是一個客戶端
和服務端
的一個http
代理工具 , 客戶端
和服務端
彼此之間的交流都可以被Fiddler
所監(jiān)聽到!
Fiddler
不僅僅是一款非常強大的抓包工具剑勾,還是一款web
調(diào)試的利器
它能夠?qū)崿F(xiàn)以下功能:
- 監(jiān)控我們
瀏覽器
所有的http/https
的信息和流量,也就是所有的請求黍少,所有的流量都可以監(jiān)聽 - 當監(jiān)聽截取到
http
請求之后蛋欣,就可以做一些查看 分析
瀏覽器請求的內(nèi)容細節(jié),就可以偽造一些請求 偽造一個服務器的響應都是可以的! - 還可以測試網(wǎng)站的性能
- 解密
https
的web會話 - 全局航徙、局部斷點功能!
Fiddler
的應用場景也很廣泛
- 接口測試
- 接口調(diào)試
- 線上環(huán)境調(diào)試
- web項目性能分析
- 前后端bug監(jiān)測
- 弱網(wǎng)斷網(wǎng)監(jiān)測
- hosts配置監(jiān)測
- mock模擬測試
要知道Fiddler
作為系統(tǒng)代理,所有的來自微軟互聯(lián)網(wǎng)服務的http請求
在到達目標Web服務器
之前都會經(jīng)過Fiddler
陷虎,同樣的到踏,所有的Http
響應都會在返回客戶端之前也會經(jīng)過Fiddler
。
為什么要學習Fiddler?
因為我們做開發(fā)必然要和http
打交道對吧尚猿, 并且還有一些新手朋友也要學習http
的相關(guān)知識窝稿,但是http
的知識點比較多和雜亂,如果你沒有一個看得見摸的著
的數(shù)據(jù)參照
,是很難去把控http
信息, 那么要理解http
協(xié)議凿掂,我個人建議可以先從抓包工具
開始從淺入深的形式慢慢了解http
以及Fiddler
這款抓包工具的使用
所以不管你是分析http
還是剛剛學習http
的朋友 ,都可以先學習一下Fiddler
抓包工具!
并且在windows
系統(tǒng)下只要一提到抓包
肯定首選的就是Fiddler
總之學習了Fiddler
之后伴榔,會讓你對http
的理解更上一層樓!
下載Fiddler
官方下載地址
https://www.telerik.com/download/fiddler
填寫好電子郵箱
和國家地區(qū)
點擊Download for windows
就可以下載了
如圖
注意
這個Fiddler
工具是基于.NET Framework
的 ,因為Fiddler
是c#
開發(fā)的
如果是比較老的windows系統(tǒng)
要保證運行環(huán)境!??
Fiddler
的安裝方法也很簡單 獲取到安裝包之后,直接選擇安裝路徑 或 無腦下一步就可以了!??
安裝成功會顯示如下界面!
軟件體系結(jié)構(gòu)—B/S 與 C/S架構(gòu)
B/S架構(gòu)
在了解Fiddler
原理之前,還先清楚我們web
最基本的架構(gòu)是什么缠劝,就是B/S
架構(gòu), 它也是目前最常用的一種軟件架構(gòu)
B
就是瀏覽器(Browsers)
也就是客戶端
這邊
S
就是服務器端(Server)
也就是web服務器
這邊
我們平常的web服務潮梯、web項目骗灶、web應用
都是運行在服務端
的, 那么通過綁定ip地址+端口監(jiān)聽
的形式來接收和處理一些前端也就是客戶端
發(fā)起的http
請求, 從而客戶端
通過http協(xié)議
和請求就可以獲取到指定服務器上的頁面 文件 資源惨恭、
等等..
如圖
舉個例子
當你在瀏覽器
地址欄上輸入百度
的地址之后,服務器端就會給你返回一個百度的html
頁面資源
總結(jié)
B/S架構(gòu)
就是瀏覽器/服務器
的一種交互模式
耙旦,是Browser/Server
的簡稱脱羡。
并且這種架構(gòu)的軟件不需要在用戶的電腦上安裝任何客戶端
程序萝究,只需要在用戶的電腦上安裝瀏覽器
即可。
用戶僅僅使用瀏覽器
通過web服務器和數(shù)據(jù)庫做交互锉罐,交互的結(jié)果將會以html網(wǎng)頁
的形式顯示在瀏覽器
上帆竹。
C/S架構(gòu) [了解]
出了我們的B/S架構(gòu)
,其實還有一種就是C/S架構(gòu)
是客戶端/服務端
的一種交互模式脓规,是Client/Server
的簡稱栽连。它是早期常用的一種軟件架構(gòu)
,這種架構(gòu)的軟件需要在用戶的電腦上安裝客戶端程序
, 有興趣的朋友可以自行了解侨舆,這里就不過多贅述了!
我們平常在進行軟件開發(fā)時秒紧,通常會根據(jù)需求在兩種基本架構(gòu)中進行選擇!
HTTP 基礎(chǔ)知識
學習Fiddler
的時候,HTTP
的知識點也是必不可少的, 所以這里必須要給大家簡單的介紹一下HTTP
的相關(guān)知識!
http
中文意思為超文本傳輸協(xié)議
英文全稱為Hyper Text Transfer Protocol
它是用于萬維網(wǎng)服務器
傳輸超文本
到本地瀏覽器的一種傳輸協(xié)議
目的是保證客戶端
與服務端
之間的通信
什么是http請求和響應?
http
的工作方式為一個簡單的客戶端請求 與 服務端響應
的應答過程
它指定了客戶端
發(fā)送給服務器
什么樣的消息形式
以及得到什么樣的消息響應
所有的www
文件都必須遵循這個標準協(xié)議, 目的是提供一種發(fā)布和接收html頁面
的方法
舉個例子
比如說 客戶端(瀏覽器)
向服務器
提交一個http請求
, 那么服務器
又會向客戶端
這邊返回響應信息
。而這些響應信息
包含關(guān)于客戶端
請求的狀態(tài)信息以及客戶端
所需要的內(nèi)容信息挨下。
如圖
http協(xié)議和web之間的本質(zhì)
其實就是瀏覽器
和服務器
打交道的
客戶端
向服務器端
發(fā)送Http請求
,然后服務器端
向客戶端
返回http
響應!
http協(xié)議
就是瀏覽器
和服務器
之間進行溝通的一種規(guī)范, 也就是以這個規(guī)范
來向服務器發(fā)起請求
, 服務器才會給客戶端
進行正確的響應, 所以http
有的時候也可以理解為是一種 規(guī)范熔恢、規(guī)則、標準
http協(xié)議
是屬于應用層
的協(xié)議,而且是基于TCP/IP協(xié)議
的, 也就是說http
通信發(fā)生在TCP/IP
鏈接之上
通俗一點說http協(xié)議
就是基于TCP
的一種應用層協(xié)議
它不會關(guān)系數(shù)據(jù)傳輸?shù)募毠?jié)問題,也就是說你不用去關(guān)心它下層TCP
的運行邏輯, 它的核心只在于用來規(guī)定客戶端和服務端
的數(shù)據(jù)傳輸格式
最早http
是用來向客戶端傳輸html文件內(nèi)容
,默認的端口80
擴展
有興趣的朋友可以自行了解一下iso網(wǎng)絡(luò)七層模型
通俗點說http
臭笆,就是在請求和響應
之后叙淌,服務器端立即關(guān)閉連接
,并釋放資源愁铺,這樣既保證了資源可顯示與可用性鹰霍,也吸取了TCP協(xié)議
的可靠性優(yōu)點,但是缺點就無法跟蹤用戶的操作了,所以我們在后端開發(fā)
的學習中才會接觸一個東西叫session和cookie
技術(shù)
所以你也可以理解為http
是基于請求與響應
的模式, 并且是無狀態(tài)的應用層協(xié)議
http請求和響應的基本原理
任何一個http請求
都只會分為兩個部分: 一個請求報文
另外一個是響應報文
請求報文
是客戶端
按照一定的格式生成一段文本,然后發(fā)給我們的服務端
, 而服務器
接收到了這樣一個請求報文
就會解析里面的內(nèi)容,然后做出回饋,也就是響應
響應報文
也就是服務器端
根據(jù)請求報文
反饋給客戶端
的文本信息
http請求報文 (request)基本結(jié)構(gòu)
http請求(request)
也叫請求報文
一個基本的http請求報文
結(jié)構(gòu)分為如下幾點:
-
請求行
:就是請求方式和協(xié)議,也就是說用于描述客戶端
的請求方式
,例如post/get
方式, 以及請求的資源名稱和HTTP協(xié)議
的版本號! -
若干個請求頭
: 這些也叫消息頭
告訴服務器發(fā)送的是什么數(shù)據(jù)類型茵乱,編碼類型衅谷、請求的是哪臺主機、以及客戶端瀏覽器的一些系統(tǒng)環(huán)境
等等似将, 這些消息頭
中有很多頭部字段名
和對應的值
它的格式為name:value
空白行
請求正文內(nèi)容
抓包了解一下
那么我們在學習http
知識的時候 就可以先直接使用Fiddler
來抓取一個http請求
和http響應
來先看看到底是什么東西!
這樣也有助于一些新手來理解http
!
我們可以通過Fiddler
抓取網(wǎng)絡(luò)數(shù)據(jù)包的手段获黔,就可以看到一個基本的http請求
結(jié)構(gòu)都包含哪些信息!
例如一個GET方式
的請求(Request)
信息 如下:
GET https://www.baidu.com/?name=zhangsan HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="100", "Google Chrome";v="100"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
例如一個POST方式
的請求(Request)
信息 如下:
POST https://api.codelife.cc/stat/userHm HTTP/1.1
Host: api.codelife.cc
Connection: keep-alive
Content-Length: 48
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="100", "Google Chrome";v="100"
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36
Content-Type: application/json
Accept: application/json, text/plain, */*
sec-ch-ua-platform: "Windows"
version: 1.2.27
Origin: chrome-extension://mhloojimgilafopcmlcikiidgbbnelip
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
{"fp":"4c49c2fd79e1658546e4b8ad","tn":6}
怎么樣 是不是看這一大堆腦殼都大了呢 ? 哈哈哈不要著急在验,我們慢慢來學!??????
我們先來看一張請求(Request)
圖解
如圖
然后我們來逐一拆解
上圖中的各個部分!
1.請求方式 (Request method)
我們常見的一些請求方式也就是POST/GET
,當然還有其他的一些請求方式, 如下表:
請求方法 | 描述 |
---|---|
GET |
請求資源 比如常見的就是輸入一個URL 去請求一個資源下來, 它也可以帶上一定的參數(shù)一起請求 |
POST |
提交資源 比如說我們想把用戶名和密碼 提交到服務器去,這個時候用POST 比較好 |
HEAD |
獲取響應頭 |
PUT |
替換資源 |
DELETE |
刪除資源 |
OPTIONS |
允許客戶端查看服務器的性能 |
TRACE |
顯示服務器收到的請求 常見于測試和調(diào)試診斷! |
2.URL (Uniform Resource Locator)
URL
中文名為統(tǒng)一資源定位符
英文全稱Uniform Resource Locator
,
我們網(wǎng)絡(luò)中的每一信息資源都有統(tǒng)一的且在網(wǎng)上唯一的地址!
URL具體由4部分組成:協(xié)議玷氏、主機、域名腋舌、端口盏触、路徑文件、[附加資源]
URL的一般語法格式為:
protocol :// hostname[:port] / path / [?query-parameters]
1.協(xié)議 (protocol)
協(xié)議有http块饺、ftp赞辩、https
、等...
2.主機名 (hostname) + 域名
主機名+域名
例如: www.xsphp.com
3.端口 (port)
端口是一個數(shù)字, 端口是可選的 省略時使用方案是服務器默認配置的端口
例如 80授艰、8080辨嗽、..
各種傳輸協(xié)議
都有默認的端口號,如http協(xié)議
的默認端口為80
如果URL地址
省略端口淮腾,則使用默認端口號
注意
有時候出于安全或其他考慮糟需,可以在服務器配置上對端口進行重新定義屉佳,也就是采用非標準端口號
,那么此時洲押,URL地址
中就不能省略端口號
這一項武花。
4.路徑文件 (path)
由零或多個/
符號隔開的字符串,一般用來表示主機上的一個目錄或文件地址
例如: /tpl/index.php
5.查詢參數(shù) 附加資源 (query-parameters)
這一項在URL
中也是可選的 用于給動態(tài)網(wǎng)頁如 PHP/JSP/ASP/ASP.NET
等后端頁面 傳遞參數(shù)
的一種方式杈帐,并且如果是GET
請求方法, 那么可有多個參數(shù), 它們彼此用&
符號隔開体箕,每個參數(shù)的名和值用=
符號隔開
語法格式: ?參數(shù)=值&參數(shù)2=值
以此類推!
例如: ?id=33&age=25&name=zhangsan
舉個例子
一個比較常見的url
地址, 如下:
https://www.xxxx.net/xxxx/xxxx/xxxx/100?num=1001.2014.3001.5501
3.請消息求頭 (Request Header)
請求消息頭
也叫消息頭
告訴服務器發(fā)送的是什么數(shù)據(jù)類型挑童,編碼類型干旁、請求的是哪臺主機、以及客戶端瀏覽器的一些系統(tǒng)環(huán)境
等等前面已經(jīng)說過了, 并且請求頭
是可以由開發(fā)人員根據(jù)需求去進行自定義
的
這些消息頭
中有很多頭部字段名
和 對應的值
它的格式為 name:value
我們常見的一些請求頭
如下表:
請求頭 | 描述 | |
---|---|---|
Host |
主機IP地址或域名 | |
User-Agent |
提交一些客戶端 相關(guān)信息炮沐,例如: 操作系統(tǒng)争群、瀏覽器 等一些版本信息給服務器 , 而這些信息可能會讓服務器 按照一定的規(guī)則給客戶端 返回兼容性比較好的信息! |
|
Accept |
指定客戶端 接收的信息類型,<br />例如:image/jpg,text/html,application/json <br />也就是可以讓客戶端 告訴服務器 之后客戶端這一邊想接收到什么樣的數(shù)據(jù)格式 |
|
Accept-Charset |
告訴服務器 等一會這邊客戶端 需要接收的字符集編碼格式 大年, |
<br />例如:gb2312换薄、iso-8859-1、utf-8
|
Accept-Encoding |
告訴服務器 翔试, 客戶端這邊可接受的內(nèi)容壓縮編碼 轻要,例如gzip 可以在一定程度上節(jié)省流量! |
|
Accept-Language |
告訴服務器, 客戶端 可接受的語言,例如Accept-Language:zh-cn
|
|
Authorization |
客戶端提供給服務端進行權(quán)限認證的信息, 也就是要告訴服務器端一些認證的信息垦缅,服務器才能返回響應的數(shù)據(jù)! | |
Cookie |
攜帶的COOKIE信息, 普通情況下冲泥,當一個用戶登錄成功,就會在本地保存一份cookie ,下次請求就會直接帶上這個cookie 信息壁涎,也就是這個用戶的相關(guān)信息 |
|
Referer |
當前文檔的URL 也就是紀錄下從哪個鏈接地址 提交到服務器 的 |
|
Content-Type |
向服務器 提交內(nèi)容的格式<br />例如:Content-Type:application/x-www-form-urlencoded <br />總而言之,就是告訴服務器 ,客戶端 傳遞的內(nèi)容屬于什么格式 或 其他編碼格式! |
|
Content-Length |
數(shù)據(jù)長度, 也就是客戶端 向服務器端 提交內(nèi)容的數(shù)據(jù)長度有多少字節(jié)! |
|
Cache-Control |
緩存機制凡恍,例如:Cache-Control:no-cache
|
|
pragma |
防止頁面被緩存,與Cache-Control:no-cache 作用一樣 |
|
.............................................. |
我們可以用Fiddler
截取一個請求頭
看看
如圖
4.空行
空白行
也就是在消息頭
結(jié)束的下方怔球,會存在一個空白行
, 這是必須存在的, 是由HTTP
標準規(guī)定的!
5.請求體
請求體
它的出現(xiàn)是要根據(jù)請求的方式不同而不同, 也就是如果是POST
那么就會以鍵與值
的形式進行發(fā)送, 如果是GET
請求那么這里就不會包含請求正文內(nèi)容
http響應報文 (Response)基本結(jié)構(gòu)
http響應(response)
也叫響應報文
其實響應報文
比請求報文
更加簡單, 你只要能夠搞懂請求報文
那么響應報文
就很容易搞懂!
http響應(response)
的一個基本結(jié)構(gòu)分為如下幾點:
響應行
響應頭
空白行
響應體
我們可以通過Fiddler
抓取網(wǎng)絡(luò)數(shù)據(jù)包的手段嚼酝,就可以看到一個基本的http響應
結(jié)構(gòu)都包含哪些信息!
舉個例子
如果你還看不明白 那么我們先來看一張http響應(response)
圖解 你就會明白了!
然后我們來逐一拆解
上圖中的各個部分!
1.響應行
響應行
也叫狀態(tài)行
, 上圖中響應行
內(nèi)部其實包含了3個重要的信息部分:
HTTP協(xié)議的版本竟坛、HTTP狀態(tài)碼闽巩、HTTP的狀態(tài)描述
1.HTTP協(xié)議的版本
現(xiàn)目前都是HTTP/1.1
版本 這個沒什么好說的!
2.HTTP狀態(tài)碼
可以用來表示網(wǎng)頁服務器端給客戶端返回的HTTP
響應狀態(tài), 通常都是3位數(shù)字
的代碼, 而這些常見的狀態(tài)碼
又可以分為幾種提示類型: ?? 如下表
類別狀態(tài)碼 | 描述 |
---|---|
1xx |
這種類別的狀態(tài)碼 為提示消息類型 通常表示請求被服務器端成功接收
|
2xx |
這種類別的狀態(tài)碼 為成功消息類型 通常表示請求被服務器端成功處理
|
3xx |
這種類別的狀態(tài)碼 為重定向類型 通常表示被服務器端重新定義了請求方向,需要進一步的操作以完成請求
|
4xx |
這種類別的狀態(tài)碼 為客戶端錯誤信息 通常表示服務器告訴客戶端的一些錯誤消息
|
5xx |
這種類別的狀態(tài)碼 為服務端錯誤信息 通常表示告訴客戶端 服務器這邊出現(xiàn)的一些錯誤信息
|
3.HTTP的狀態(tài)描述
是緊跟在狀態(tài)碼
后面的英文單詞
每一種具體類別狀態(tài)碼+狀態(tài)描述
可以參考下表:
1xx: 提示消息類型
消息: | 狀態(tài)描述 | 含義 |
---|---|---|
100 | Continue | 服務器僅接收到部分請求,但是一旦服務器并沒有拒絕該請求担汤,客戶端應該繼續(xù)發(fā)送其余的請求涎跨。 |
101 | Switching Protocols | 服務器轉(zhuǎn)換協(xié)議:服務器將遵從客戶的請求轉(zhuǎn)換到另外一種協(xié)議。 |
2xx: 成功消息類型
消息: | 狀態(tài)描述 | 含義 |
---|---|---|
200 | OK | 請求成功(其后是對GET和POST請求的應答文檔崭歧。) |
201 | Created | 請求被創(chuàng)建完成隅很,同時新的資源被創(chuàng)建。 |
202 | Accepted | 供處理的請求已被接受驾荣,但是處理未完成外构。 |
203 | Non-authoritative Information | 文檔已經(jīng)正常地返回,但一些應答頭可能不正確播掷,因為使用的是文檔的拷貝审编。 |
204 | No Content | 沒有新文檔。瀏覽器應該繼續(xù)顯示原來的文檔歧匈。如果用戶定期地刷新頁面垒酬,而Servlet可以確定用戶文檔足夠新,這個狀態(tài)代碼是很有用的件炉。 |
205 | Reset Content | 沒有新文檔勘究。但瀏覽器應該重置它所顯示的內(nèi)容。用來強制瀏覽器清除表單輸入內(nèi)容斟冕。 |
206 | Partial Content | 客戶發(fā)送了一個帶有Range頭的GET請求口糕,服務器完成了它。 |
3xx: 重定向類型
消息: | 狀態(tài)描述 | 含義 |
---|---|---|
300 | Multiple Choices | 多重選擇磕蛇。鏈接列表景描。用戶可以選擇某鏈接到達目的地。最多允許五個地址秀撇。 |
301 | Moved Permanently | 所請求的頁面已經(jīng)轉(zhuǎn)移至新的url, 說通俗一點表示請求的資源分配了url超棺,以后就應該使用這個url |
302 | Found | 所請求的頁面已經(jīng)臨時轉(zhuǎn)移至新的url, 也就是說請求的資源臨時分配了url,本次請求暫且使用這個url呵燕, 這里302與301 的區(qū)別是棠绘,302表示臨時性重定向,重定向的url還有可能還會改變再扭。 |
303 | See Other | 表示請求的資源路徑發(fā)生改變氧苍,請使用GET 方法請求url。其實與302一樣泛范,但是明確指出讓我們使用GET 方法請求url |
304 | Not Modified | 未按預期修改文檔候引。客戶端有緩沖的文檔并發(fā)出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)敦跌。服務器告訴客戶澄干,原來緩沖的文檔還可以繼續(xù)使用。 |
305 | Use Proxy | 客戶請求的文檔應該通過Location頭所指明的代理服務器提取柠傍。 |
306 | Unused | 此代碼被用于前一版本麸俘。目前已不再使用,但是代碼依然被保留惧笛。 |
307 | Temporary Redirect | 被請求的頁面已經(jīng)臨時移至新的url从媚。 |
4xx: 客戶端錯誤信息
消息: | 狀態(tài)描述 | 含義 |
---|---|---|
400 | Bad Request | 服務器未能理解請求,通常為表示請求的報文中存在語法錯誤 患整,比如: 提交json 數(shù)據(jù)的時候拜效,如果json 格式有問題喷众,接收端接收json ,也會出現(xiàn)400 bad request
|
401 | Unauthorized | 被請求的頁面需要用戶名和密碼紧憾。 |
402 | Payment Required | 此代碼尚無法使用到千。 |
403 | Forbidden | 對被請求頁面的訪問被禁止。 |
404 | Not Found | 服務器無法找到被請求的頁面赴穗。 |
405 | Method Not Allowed | 請求中指定的方法不被允許, 請求的方式get憔四、post、delete 方法與后臺規(guī)定的方式不符合 例如: 比如: 后臺方法規(guī)定的請求方式只接受get 般眉,如果用post 請求了赵,就會出現(xiàn) 405 method not allowed 的提示 |
406 | Not Acceptable | 服務器生成的響應無法被客戶端所接受。 |
407 | Proxy Authentication Required | 用戶必須首先使用代理服務器進行驗證甸赃,這樣請求才會被處理柿汛。 |
408 | Request Timeout | 請求超出了服務器的等待時間。 |
409 | Conflict | 由于沖突埠对,請求無法被完成苛茂。 |
410 | Gone | 被請求的頁面不可用。 |
411 | Length Required | "Content-Length" 未被定義鸠窗。如果無此內(nèi)容妓羊,服務器不會接受請求。 |
412 | Precondition Failed | 請求中的前提條件被服務器評估為失敗稍计。 |
413 | Request Entity Too Large | 由于所請求的實體的太大躁绸,服務器不會接受請求。 |
414 | Request-url Too Long | 由于url太長臣嚣,服務器不會接受請求净刮。當post請求被轉(zhuǎn)換為帶有很長的查詢信息的get請求時,就會發(fā)生這種情況硅则。 |
415 | Unsupported Media Type | 由于媒介類型不被支持淹父,服務器不會接受請求, 例如: 后臺程序不支持提交的content-type 類型,就會返回415
|
416 | 服務器不能滿足客戶在請求中指定的Range頭怎虫。 | |
417 | Expectation Failed |
5xx: 服務器錯誤信息
消息: | 狀態(tài)描述 | 含義 |
---|---|---|
500 | Internal Server Error | 請求未完成暑认。服務器遇到不可預知的情況。 |
501 | Not Implemented | 請求未完成大审。服務器不支持所請求的功能蘸际。 |
502 | Bad Gateway | 請求未完成。服務器從上游服務器收到一個無效的響應徒扶。 |
503 | Service Unavailable | 請求未完成粮彤。服務器臨時過載或當機。 |
504 | Gateway Timeout | 網(wǎng)關(guān)超時。 |
505 | HTTP Version Not Supported | 服務器不支持請求中指明的HTTP協(xié)議版本导坟。 |
2.響應頭 (Response Header)
響應頭
也叫消息報頭
也就是服務器端
要告訴客戶端
的一些附加信息, 但是也有可能這些響應頭
是由后端開發(fā)人員進行自定義的!
而且這里的響應頭
跟請消頭
很類似, 格式也基本一樣, 它的格式為 name:value
具體我這里也列舉了一些常見的響應頭
如下表:
響應頭 | 含義 |
---|---|
Server |
HTTP服務器的軟件信息 |
Date |
響應報文的時間, 要注意返回時間的時區(qū) |
Expiros |
服務器指定的一個緩存過期時間 |
Set-Cookie |
設(shè)置Cookie, 也就是服務器 返回的一段文本給客戶端 ,讓客戶端 保存好,下次請求就把這個cookie 文本帶上! |
Last-Modified |
資源最后修改時間 屿良,也就是客戶端有緩沖的文檔并發(fā)出了一個條件性的請求, 服務器告訴客戶,原來緩沖的文檔還可以繼續(xù)使用, 也就是說不用在從服務器中進行返回 |
Content-Type |
服務器 返回給客戶端 的響應類型和編碼字符集<br />例如:Content-Type:text/html;charset=utf-8
|
Content-Length |
內(nèi)容長度, 也就是服務器 返回給客戶端 返回的內(nèi)容是多少字節(jié) |
Connection |
例如Keep-Alive 惫周,表示保持tcp鏈接不會關(guān)閉 尘惧,當然它不會永久保持鏈接,我們在服務器端中是可以設(shè)置的 |
Location |
指明服務器 給客戶端 重定向的位置闯两,也就是新的URL地址 如:304的情況 |
...................................... |
還有更多的響應頭
這里就不一一列舉了!
3.空白行
空白行
也就是http
規(guī)范制定的必須存在的一個空行
, 空行的目的就是一種格式褥伴,也就是要告訴用戶接下來的內(nèi)容就是正文內(nèi)容了!
4.響應體
響應體
也就是實際從服務器
返回給客戶端
的正文內(nèi)容,也可能是一些字符串谅将, 也可以是任意的格式:
響應體
大多數(shù)情況下都是html漾狼、json、文本饥臂、xml
這些格式!
小結(jié)
對于http
相關(guān)的的知識點 就說這么多了,對于學習fiddler
足夠了
接下來你就可以愉快的學習Fiddler
了??
Fiddler運行原理
Fiddler
的原理簡單點說就是通過改寫HTTP代理
然后讓網(wǎng)絡(luò)數(shù)據(jù)
從Fiddler
這邊通過 這樣子來監(jiān)控并且截取到網(wǎng)絡(luò)信息數(shù)據(jù)逊躁。當你打開Fiddler
的時候, 就已經(jīng)設(shè)置好了瀏覽器的代理了。當你關(guān)閉的時候隅熙,它會自動的幫你把代理還原
之前也說過了 B/S
架構(gòu)就是客戶端
和服務器
之間的 請求和響應
, 剛剛我們也知道了Fiddler
通過代理
的形式來進行監(jiān)聽稽煤,它在請求和響應
中起到一個什么樣的角色呢?
這里還要清楚一點的就是 瀏覽器
默認走的是我們的系統(tǒng)代理
其實這里的代理監(jiān)聽
就是在 請求和響應
之間插了一腳, 讓fiddler
成為系統(tǒng)代理
在你安裝好Fiddler
之后啟動,并可以打開菜單欄中的Tools--->options--->Connections
如下圖
看到了吧,這里有一句Act as system proxy on startup
意思就是(在啟動時充當系統(tǒng)代理)
,并且默認監(jiān)聽端口設(shè)置為了8888
如圖
這里以chrome瀏覽器
為例:
只要fiddler
一旦啟動并開始監(jiān)聽
的時候囚戚,就會默認成為系統(tǒng)代理
, 所以你的網(wǎng)絡(luò)請求 也就會被fiddler
所抓取到!
如圖
或者如下圖一樣Fiddler
就是一個中間的proxy(代理服務器)
當關(guān)閉fiddler
的時候酵熙,手動設(shè)置代理
選項就會被清空
所以我們才會說Fiddler
是介于客戶端
和服務器
中間的一個角色, 監(jiān)控客戶端
和服務器
所有通信的過程!
小結(jié)
Fiddler
是以代理WEB服務器
的形式工作的,瀏覽器與服務器
之間通過建立TCP連接以HTTP協(xié)議
進行通信,
瀏覽器默認通過自己發(fā)送HTTP請求
到服務器
驰坊,本地使用代理地址:127.0.0.1, 端口:8888
.
而當Fiddler
開啟會自動設(shè)置系統(tǒng)代理
匾二, 退出的時候它會自動注銷代理
,這樣就不會影響別的程序拳芙。
但是如果Fiddler
非正常退出察藐,這時可能會因為Fiddler
沒有自動注銷,而會造成網(wǎng)頁無法訪問舟扎。
解決的辦法是重新啟動下Fiddler
就可以了, 這也是有很多新手安裝了Fiddler
之后導致一些網(wǎng)絡(luò)無法訪問的原因之一!
如果我的博客對你有幫助分飞、如果你喜歡我的博客內(nèi)容,請 “點贊” “評論” “收藏”
一鍵三連哦睹限!
如果以上內(nèi)容有任何錯誤或者不準確的地方譬猫,歡迎在下面 ?? 留個言指出、或者你有更好的想法羡疗,歡迎一起交流學習??????????