1. 程式人生 > 實用技巧 >http原理簡單解析測試工程師面試必備

http原理簡單解析測試工程師面試必備

網路七層協議:

網路七層協議從下到上包括:物理層、資料鏈路層、網路層、傳輸層、會話層、表示層、應用層。
在網路層有IP協議、ICMP協議、ARP協議、RARP協議和BOOTP協議。在傳輸層中有TCP協議與UDP協議。在應用層有FTP、HTTP、TELNET、SMTP、DNS等協議。因此,HTTP本身就是一個協議,但最終是基於TCP的,是從Web伺服器傳輸超文字到本地瀏覽器的傳送協議。
TCP: 傳輸控制協議,是一種面向連線的,可靠的,基於位元組流的傳輸層通訊協議。
UDP: 使用者資料報協議,無連線不可靠的,是一種簡單的面向資料報的傳輸層協議。

HTTP協議
超文字傳輸協議,是一個基於TCP/IP通訊協議來傳遞資料(HTML 檔案, 圖片檔案, 查詢結果等,是屬於應用層級的。

HTTP語法的方法主要包括:GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE最常見的是GET、POST。
GET:向特定資源發出請求
POST:指定資源提交資料進行處理請求(提交表單、上傳檔案)。

HTTP協議請求組成部分:
主要分為請求行,請求頭部,空行,請求資料(請求體)
HTTP請求報文示例:
以下是一個http請求報文,其實請求行包含了請求方法,url連結,通常還包含http版本,目前市場大多數是http1.1版本。

POST http://test-ocr-xintech.servingcloud.com/documentTemplate/wordToPdf --請求行

POST data:
{“sourceFile”:215586,“templateId”:“35”} —請求體請求資料

[no cookies] —請求頭

Request Headers:
Connection: keep-alive
Accept: application/json, text/plain, /
Content-Type: application/json;charset=UTF-8
Origin: http://test-document-frontend.xintech.servingcloud.com
Referer: http://test-document-frontend.xintech.servingcloud.com/DocumentTemplate?token=1f24039229394e5aa33f900780b947a2

token: 1f24039229394e5aa33f900780b947a2
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36
Content-Length: 39
Host: test-ocr-xintech.servingcloud.com

常用請求頭釋義:
Accept:告訴伺服器,客戶端支援的資料型別。
Accept-Charset:告訴伺服器,客戶端採用的編碼。
Accept-Encoding:告訴伺服器,客戶機支援的資料壓縮格式。
Accept-Language:告訴伺服器,客戶機的語言環境。
Host:客戶機通過這個頭告訴伺服器,想訪問的主機名。
If-Modified-Since:客戶機通過這個頭告訴伺服器,資源的快取時間。
Referer:客戶機通過這個頭告訴伺服器,它是從哪個資源來訪問伺服器的。(一般用於防盜鏈)
User-Agent:客戶機通過這個頭告訴伺服器,客戶機的軟體環境。
Cookie:客戶機通過這個頭告訴伺服器,可以向伺服器帶資料。
Connection:客戶機通過這個頭告訴伺服器,請求完後是關閉還是保持連結。
Date:客戶機通過這個頭告訴伺服器,客戶機當前請求時間

通用頭域:
通用頭域包含請求和響應訊息都支援的頭域,通用頭域包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。對通用頭域的擴充套件要求通訊雙方都支援此擴充套件,如果存在不支援的通用頭域,一般將會作為實體頭域處理。
Cache-Control指定請求和響應遵循的快取機制,請求時的快取指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,響應訊息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age
Public指示響應可被任何快取區快取。
Private指示對於單個使用者的整個或部分響應訊息,不能被共享快取處理。這允許伺服器僅僅描述當用戶的部分響應訊息,此響應訊息對於其他使用者的請求無效。
no-cache指示請求或響應訊息不能快取
no-store用於防止重要的資訊被無意的釋出。
max-age指示客戶機可以接收生存期不大於指定時間(以秒為單位)的響應,等等。

HTTP Keep-Alive
因為http是無連線的(意思是限制每次連線只處理一個請求),Keep-Alive功能使客戶端到伺服器端的連線持續有效,當出現對伺服器的後繼請求時,Keep-Alive功能避免了建立或者重新建立連線。
Content-Type用來表示具體請求中的媒體型別資訊。
例如Content-Type: text/html;charset:utf-8;
Application:也是用來表示請求中的媒體型別資訊,他們二者在於所支援的格式不一樣。支援json格式。

HTTP協議響應組成部分:
HTTP響應分為響應行,響應頭,響應體
響應行包含了響應協議及協議版本,狀態碼
響應示例:
HTTP/1.1 200
Date: Thu, 06 Jun 2019 03:26:41 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Access-Control-Allow-Origin: http://test-document-frontend.xintech.servingcloud.com
Access-Control-Allow-Credentials: true

{“code”:1,“msg”:“操作成功”,“data”:{“companyId”:“e15c2fa655f544a6b0843a96c4de33f4”,“companyName”:"****",“companyType”:“admin”,“serviceMenu”:[]}}

常見返回值含義:

在這裡插入圖片描述

狀態碼 含義
100 請求者應當繼續提出請求。伺服器返回此程式碼表示已收到請求的第一部分,正在等待其餘部分
200 伺服器已成功處理了請求
302 重寫向,會自動將請求者轉到不同的位置
400 伺服器不理解請求的語法。
401 請求要求身份驗證。對於登入後請求的網頁,伺服器可能返回此響應。
404 伺服器找不到網頁
500 伺服器內部錯誤
502 閘道器錯誤
504 閘道器超時

常見響應頭:
Content-Length:表示內容長度,只有瀏覽器使用持久http連線時才需要這個引數。
Expires:表示文件的過期時間,1.0中的引數,是相對檔案的最後訪問時間(Atime)或者修改時間(MTime),會出現客戶端和伺服器時間不同步導致Expires的配置出現問題。
max-age:也是表示文件過期時間,是1.1的引數,相對對的是文件的請求時間(Atime)。
Expires = 時間,HTTP 1.0 版本,快取的載止時間,允許客戶端在這個時間之前不去檢查(發請求)。
max-age = 秒,HTTP 1.1版本,資源在本地快取多少秒。
備註:如果max-age和Expires同時存在,則被Cache-Control的max-age覆蓋。

任務:
使用抓包工具進行抓取http請求,同時抓取app的請求。