網(wǎng)站開(kāi)發(fā)的測(cè)試內(nèi)容怎樣建立個(gè)人網(wǎng)站
目錄
一、什么是HTTP?
二、與HTTP有關(guān)的協(xié)議
三、HTTP請(qǐng)求特征
四、HTTP組成格式
五、HTTP標(biāo)頭
1.通用標(biāo)頭
2.實(shí)體標(biāo)頭
3.請(qǐng)求標(biāo)頭
4.響應(yīng)標(biāo)頭
六、HTTP狀態(tài)碼分類
我們?cè)谌粘y(cè)試過(guò)程中,也可以通過(guò)瀏覽器F12簡(jiǎn)單定位是前端問(wèn)題還是后端問(wèn)題,同樣的在接口自動(dòng)化測(cè)試過(guò)程中,基本都是發(fā)送HTTP/HTTPS請(qǐng)求,本文主要是講解下HTTP基礎(chǔ)知識(shí),適合小白。后續(xù)會(huì)講解接口自動(dòng)化測(cè)試中Python庫(kù)中強(qiáng)大的requests庫(kù),盡請(qǐng)期待。
一、什么是HTTP?
HTTP(超文本傳輸協(xié)議):在計(jì)算機(jī)世界里專門在兩點(diǎn)之間進(jìn)行傳輸文字、圖片、音頻、視頻等超文本數(shù)據(jù)的約束和規(guī)范。網(wǎng)絡(luò)協(xié)議。
二、與HTTP有關(guān)的協(xié)議
- TCP/IP協(xié)議(又稱為協(xié)議簇):主要包含TCP(傳輸控制協(xié)議--可靠)、IP(通信尋址),還有UDP(用戶數(shù)據(jù)報(bào)協(xié)議)、ICMP(Internal控制報(bào)文協(xié)議)、ARP(地址解析協(xié)議)。
- DNS(域名系統(tǒng)):將域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫(kù)。
- URI/URL:URI(統(tǒng)一資源標(biāo)示符),URL(統(tǒng)一資源定位符,即網(wǎng)址),URN(統(tǒng)一資源名稱)。
- HTTPS---在HTTP的基礎(chǔ)上加了SSL層,就是說(shuō):HTTPS=HTTP+SSL/TLS(80端口是HTTP的默認(rèn)端口、443端口是HTTPS的默認(rèn)端口)
三、HTTP請(qǐng)求特征
- 支持客戶-服務(wù)器
- 簡(jiǎn)單快速。常用的HTTP請(qǐng)求方式有:get、head、post
- 靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對(duì)象
- 無(wú)連接:限制每次連接只處理一個(gè)請(qǐng)求,服務(wù)器處理完客戶的請(qǐng)求,并收到客戶的應(yīng)答后,斷開(kāi)連接
- 無(wú)狀態(tài):協(xié)議對(duì)于事務(wù)處理沒(méi)有記憶能力
四、HTTP組成格式
- HTTP組成:起始行、頭部字段、消息正文
????????起始行和頭部字段并成為請(qǐng)求頭或響應(yīng)頭---header
????????消息正文:稱為實(shí)體---body
????????HTTP每次發(fā)送的報(bào)文必須含有header,body可以沒(méi)有,且header和body之間必須要有一個(gè)空行
每個(gè)報(bào)文的起始行由:請(qǐng)求方法、URL字段、HTTP版本字段組成
- HTTP的請(qǐng)求方法一般有8種:
Get(獲取資源):用于請(qǐng)求訪問(wèn)已經(jīng)被URI識(shí)別的資源
Post(傳輸實(shí)體)
Get和Post唯一的最大的不同就是對(duì)于Post來(lái)說(shuō)后面要請(qǐng)求的數(shù)據(jù)不是必須特定賦值的
Put(傳輸文件):存在安全性問(wèn)題
Head(獲取響應(yīng)頭部):head和get一樣,只是不返回報(bào)文主題部分
Delete(刪除文件):按請(qǐng)求URI刪除指定的資源
Options:詢問(wèn)支持的方法
Trace:追蹤路徑
Connnect:隧道協(xié)議連接代理,主要使用SSL(安全套接層)和TLS(傳輸層安全)協(xié)議加密后通過(guò)網(wǎng)絡(luò)隧道傳輸
五、HTTP標(biāo)頭
根據(jù)屬性所在的位置可劃分為:通用標(biāo)頭、實(shí)體標(biāo)頭、請(qǐng)求標(biāo)頭、響應(yīng)標(biāo)頭
根據(jù)是否被緩存可劃分為:end-to-end(端到端首部)、top-to-top(逐跳首部)
逐跳首部:connection、keep-alive、proxy-authenticate、proxy-authorization、trailer、TE、transfer-encoding、upgrade
端到端首部:cache-control、pragma、via、warning
1.通用標(biāo)頭
通用標(biāo)頭:用于傳達(dá)有關(guān)消息本身的信息,而不是它所攜帶的內(nèi)容。
主要的通用標(biāo)頭有:cache-control、connection、date、pragma、trailer、transfer-encoding、upgrade、via、warning
cache-control:通用標(biāo)頭的指令,能夠管理如何對(duì)HTTP的請(qǐng)求或響應(yīng)使用緩存。 可緩存性:no-cache、no-store、private、public 緩存有效性時(shí)間:max-age、s-maxage、max-stale、min-fresh 重新驗(yàn)證并重新加載:must-revalidate、proxy-revalidate 其他:only-if-cached、no-transform Connection:HTTP協(xié)議使用TCP來(lái)管理連接方式,分為:持久性連接、非持久性連接。 持久性連接:一次會(huì)話完成后,TCP連接并未關(guān)閉,再次發(fā)起請(qǐng)求就不需要建立TCP連接,可直接進(jìn)行請(qǐng)求和響應(yīng)。 從HTTP1.1開(kāi)始,默認(rèn)使用持久性連接。 Connection:keep-alive keep-alive也是一個(gè)通用標(biāo)頭,通常connection和keep-alive一起使用,keep-alive通常由2個(gè)參數(shù):timeout、max。 keep-alive:timeout=5,max=1000 Timeout:空閑連接必須打開(kāi)的最短時(shí)間,也就是說(shuō)請(qǐng)求的連接時(shí)間不能少于5s Max:在連接關(guān)閉之前服務(wù)器所能收到的最大請(qǐng)求數(shù)。 非持久性連接:一次會(huì)話請(qǐng)求/響應(yīng)后關(guān)閉連接的方式,即:connection:close Date:可出現(xiàn)在請(qǐng)求標(biāo)頭和響應(yīng)標(biāo)頭中,格式為: Date :Wed, 21 Oct ?2015 07:28:00 GMT ???-----格林威治標(biāo)準(zhǔn)時(shí)間 Pragma:HTTP1.1之前版本的歷史遺留字段,pragma:no-cache Trailer:報(bào)文首部字段 transfer-encoding:內(nèi)容協(xié)商,規(guī)定傳輸報(bào)文所采用的編碼方式 Upgrade:首部字段upgrade用于檢測(cè)HTTP協(xié)議及其他協(xié)議是否可使用更高版本進(jìn)行通信。 Via:跟蹤客戶端和服務(wù)器之間的請(qǐng)求或響應(yīng)路徑。 Warning :警告。 |
2.實(shí)體標(biāo)頭
實(shí)體標(biāo)頭:描述消息正文內(nèi)容。
Allow:資源可支持的HTTP方法 Content-Encoding:實(shí)體主體適用的編碼方式 Content-Language:實(shí)體主體的自然語(yǔ)言 Content-Length:實(shí)體主體的大小(單位:字節(jié)) Content-Location:替代對(duì)應(yīng)資源的URI Content-MD5:實(shí)體主體的報(bào)文摘要 Content-Range:實(shí)體主體的位置范圍 Content-Type:實(shí)體主體的媒體類型 Expires:實(shí)體主體過(guò)期的日期時(shí)間 Last-Modified:資源的最后修改日期時(shí)間 |
3.請(qǐng)求標(biāo)頭
請(qǐng)求標(biāo)頭:告知客戶端能夠接收的MIME類型。
MIME:描述消息內(nèi)容類型的因特網(wǎng)標(biāo)準(zhǔn)。包含文本、圖像、音頻、視頻以及其他應(yīng)用程序?qū)S脭?shù)據(jù)等。 MIME類型: 文本文件:text/html、text/plain、text/css、application/json、application/xml 圖片文件 : image/jpeg、 image/gif、 image/png 視頻文件 :video/mpeg ? video/quicktime 應(yīng)用程序二進(jìn)制文件 : application/octet-stream ? application/zip 一般MIME類型也會(huì)和q屬性一起使用,q代表權(quán)重。 |
常見(jiàn)請(qǐng)求標(biāo)頭:
Accept: application/json, text/plain, */*,q=0.1 Accept-Charset: 表示客戶但能夠接受的字符編碼。如:utf-8, iso-8859-1;q=0.5, *;q=0.1 Accept-Encoding: 表示客戶端希望服務(wù)端返回的內(nèi)容編碼。如:gzip, deflate, br Accept-Language: 表示客戶端需要服務(wù)端返回的語(yǔ)言類型。如:zh-CN,zh;q=0.9 Authorization: 用于向服務(wù)器認(rèn)證用戶代理的憑據(jù)。 Expect: 指示服務(wù)器需要滿足的期望才能正確處理請(qǐng)求。 From: 告知服務(wù)器使用用戶代理的電子郵件地址。 Host: 服務(wù)器的域名和服務(wù)器監(jiān)聽(tīng)的TCP端口號(hào)。 Range: 指示服務(wù)器應(yīng)返回文檔指定部分的資源,可以一次請(qǐng)求一個(gè)Range來(lái)返回多個(gè)部分,服務(wù)器會(huì)將這些資源返回各個(gè)文檔中。 Referer: 告知服務(wù)器該網(wǎng)頁(yè)是從哪個(gè)頁(yè)面鏈接過(guò)來(lái)的。 TE: 告知服務(wù)器能夠處理響應(yīng)的傳輸編碼方式及相對(duì)優(yōu)先級(jí)。 User-Agent: 創(chuàng)建請(qǐng)求的瀏覽器和用戶代理名稱等信息傳達(dá)給服務(wù)器。 |
4.響應(yīng)標(biāo)頭
響應(yīng)標(biāo)頭:提供了服務(wù)器對(duì)客戶端請(qǐng)求的響應(yīng)信息。
Accept-Ranges: 是否接受字節(jié)范圍請(qǐng)求 Age: 推算資源創(chuàng)建經(jīng)過(guò)時(shí)間 ETag: 資源的匹配信息 Location: 令客戶端重定向至指定URI Proxy-Authenticate: 代理服務(wù)器對(duì)客戶端的認(rèn)證信息 Retry-After: 對(duì)再次發(fā)起請(qǐng)求的時(shí)機(jī)要求 Server: HTTP服務(wù)器的安裝信息 Vary: 代理服務(wù)器緩存的管理信息 www-Authenticate: 服務(wù)器對(duì)客戶端的認(rèn)證信息 Access-Control-Allow-Origin: 告訴瀏覽器允許該來(lái)源進(jìn)行資源訪問(wèn) Keep-Alive: Connection非連續(xù)連接的存活時(shí)間,可以進(jìn)行指定 Set-Cookie: 服務(wù)器向客戶端發(fā)送sessionID |
六、HTTP狀態(tài)碼分類
分類 | 分類描述 |
1** | 信息,服務(wù)器收到請(qǐng)求,需要請(qǐng)求者繼續(xù)執(zhí)行操作 |
2** | 成功,操作被成功接收并處理 |
3** | 重定向,需要進(jìn)一步的操作以完成請(qǐng)求 |
4** | 客戶端錯(cuò)誤,請(qǐng)求包含語(yǔ)法錯(cuò)誤或無(wú)法完成請(qǐng)求 |
5** | 服務(wù)端錯(cuò)誤,服務(wù)器在處理請(qǐng)求過(guò)程中發(fā)生了錯(cuò)誤 |
HTTP狀態(tài)碼列表:
狀態(tài)碼 | 狀態(tài)碼英文名稱 | 中文描述 |
100 | Continue | 繼續(xù)。客戶端應(yīng)繼續(xù)其請(qǐng)求 |
101 | Switching Protocols | 切換協(xié)議。服務(wù)器根據(jù)客戶端的請(qǐng)求切換協(xié)議。 |
200 | OK | 請(qǐng)求成功。一般用于GET與POST請(qǐng)求 |
201 | Created | 已創(chuàng)建。成功請(qǐng)求并創(chuàng)建了新的資源 |
202 | Accepted | 已接受。已經(jīng)接受請(qǐng)求,但未處理完成 |
203 | Non-Authoritative Information | 非授權(quán)信息。請(qǐng)求成功。但返回的meta信息不在原始的服務(wù)器,而是一個(gè)副本 |
204 | No Content | 無(wú)內(nèi)容。服務(wù)器成功處理,但未返回內(nèi)容。在未更新網(wǎng)頁(yè)的情況下,可確保瀏覽器繼續(xù)顯示當(dāng)前文檔 |
205 | Reset Content | 重置內(nèi)容。服務(wù)器處理成功,用戶終端(例如:瀏覽器)應(yīng)重置文檔視圖??赏ㄟ^(guò)此返回碼清除瀏覽器的表單域 |
206 | Partial Content | 部分內(nèi)容。服務(wù)器成功處理了部分GET請(qǐng)求 |
300 | Multiple Choices | 多種選擇。請(qǐng)求的資源可包括多個(gè)位置,相應(yīng)可返回一個(gè)資源特征與地址的列表用于用戶終端(例如:瀏覽器)選擇 |
301 | Moved Permanently | 永久移動(dòng)。請(qǐng)求的資源已被永久的移動(dòng)到新URI,返回信息會(huì)包括新的URI,瀏覽器會(huì)自動(dòng)定向到新URI。今后任何新的請(qǐng)求都應(yīng)使用新的URI代替 |
302 | Found | 臨時(shí)移動(dòng)。與301類似。但資源只是臨時(shí)被移動(dòng)。客戶端應(yīng)繼續(xù)使用原有URI |
303 | See Other | 查看其它地址。與301類似。使用GET和POST請(qǐng)求查看 |
304 | Not Modified | 未修改。所請(qǐng)求的資源未修改,服務(wù)器返回此狀態(tài)碼時(shí),不會(huì)返回任何資源。客戶端通常會(huì)緩存訪問(wèn)過(guò)的資源,通過(guò)提供一個(gè)頭信息指出客戶端希望只返回在指定日期之后修改的資源 |
305 | Use Proxy | 使用代理。所請(qǐng)求的資源必須通過(guò)代理訪問(wèn) |
306 | Unused | 已經(jīng)被廢棄的HTTP狀態(tài)碼 |
307 | Temporary Redirect | 臨時(shí)重定向。與302類似。使用GET請(qǐng)求重定向 |
400 | Bad Request | 客戶端請(qǐng)求的語(yǔ)法錯(cuò)誤,服務(wù)器無(wú)法理解 |
401 | Unauthorized | 請(qǐng)求要求用戶的身份認(rèn)證 |
402 | Payment Required | 保留,將來(lái)使用 |
403 | Forbidden | 服務(wù)器理解請(qǐng)求客戶端的請(qǐng)求,但是拒絕執(zhí)行此請(qǐng)求 |
404 | Not Found | 服務(wù)器無(wú)法根據(jù)客戶端的請(qǐng)求找到資源(網(wǎng)頁(yè))。通過(guò)此代碼,網(wǎng)站設(shè)計(jì)人員可設(shè)置"您所請(qǐng)求的資源無(wú)法找到"的個(gè)性頁(yè)面 |
405 | Method Not Allowed | 客戶端請(qǐng)求中的方法被禁止 |
406 | Not Acceptable | 服務(wù)器無(wú)法根據(jù)客戶端請(qǐng)求的內(nèi)容特性完成請(qǐng)求 |
407 | Proxy Authentication Required | 請(qǐng)求要求代理的身份認(rèn)證,與401類似,但請(qǐng)求者應(yīng)當(dāng)使用代理進(jìn)行授權(quán) |
408 | Request Time-out | 服務(wù)器等待客戶端發(fā)送的請(qǐng)求時(shí)間過(guò)長(zhǎng),超時(shí) |
409 | Conflict | 服務(wù)器完成客戶端的 PUT 請(qǐng)求時(shí)可能返回此代碼,服務(wù)器處理請(qǐng)求時(shí)發(fā)生了沖突 |
410 | Gone | 客戶端請(qǐng)求的資源已經(jīng)不存在。410不同于404,如果資源以前有現(xiàn)在被永久刪除了可使用410代碼,網(wǎng)站設(shè)計(jì)人員可通過(guò)301代碼指定資源的新位置 |
411 | Length Required | 服務(wù)器無(wú)法處理客戶端發(fā)送的不帶Content-Length的請(qǐng)求信息 |
412 | Precondition Failed | 客戶端請(qǐng)求信息的先決條件錯(cuò)誤 |
413 | Request Entity Too Large | 由于請(qǐng)求的實(shí)體過(guò)大,服務(wù)器無(wú)法處理,因此拒絕請(qǐng)求。為防止客戶端的連續(xù)請(qǐng)求,服務(wù)器可能會(huì)關(guān)閉連接。如果只是服務(wù)器暫時(shí)無(wú)法處理,則會(huì)包含一個(gè)Retry-After的響應(yīng)信息 |
414 | Request-URI Too Large | 請(qǐng)求的URI過(guò)長(zhǎng)(URI通常為網(wǎng)址),服務(wù)器無(wú)法處理 |
415 | Unsupported Media Type | 服務(wù)器無(wú)法處理請(qǐng)求附帶的媒體格式 |
416 | Requested range not satisfiable | 客戶端請(qǐng)求的范圍無(wú)效 |
417 | Expectation Failed | 服務(wù)器無(wú)法滿足Expect的請(qǐng)求頭信息 |
500 | Internal Server Error | 服務(wù)器內(nèi)部錯(cuò)誤,無(wú)法完成請(qǐng)求 |
501 | Not Implemented | 服務(wù)器不支持請(qǐng)求的功能,無(wú)法完成請(qǐng)求 |
502 | Bad Gateway | 作為網(wǎng)關(guān)或者代理工作的服務(wù)器嘗試執(zhí)行請(qǐng)求時(shí),從遠(yuǎn)程服務(wù)器接收到了一個(gè)無(wú)效的響應(yīng) |
503 | Service Unavailable | 由于超載或系統(tǒng)維護(hù),服務(wù)器暫時(shí)的無(wú)法處理客戶端的請(qǐng)求。延時(shí)的長(zhǎng)度可包含在服務(wù)器的Retry-After頭信息中 |
504 | Gateway Time-out | 充當(dāng)網(wǎng)關(guān)或代理的服務(wù)器,未及時(shí)從遠(yuǎn)端服務(wù)器獲取請(qǐng)求 |
505 | HTTP Version not supported | 服務(wù)器不支持請(qǐng)求的HTTP協(xié)議的版本,無(wú)法完成處理 |