一、瀏覽器的B-S架構和C-S架構
1、C-S架構:客戶機-服務器,簡單點就是需要下載的軟體,相關資源(圖片、視頻等會比較流暢),但是也缺少通用性(各種手機兼容),系統維護性,升級需要重新設計和開發,增加了維護和管理的難度,
2、B-S架構:瀏覽器和服務器架構模式,WEB瀏覽器是客戶端最主要的應用軟體,將系統功能實作的核心部分集中到服務器上,簡化了系統的開發,維護和使用,但是會依賴網路環境,UI影片等需要網路加載快,使用才不會卡頓,(企業一般優先開發WEB端)
3、什么是URL(統一資源定位符,獲取服務器資源的一種)
(1)標準格式:協議://服務器IP:埠/路徑1/路徑N?key1=value1&key2=value2
例如:
- https://baidu.com/#/index (域名去DNS服務器決議成ip)
- https://baidu.com/s?wd=5
- http 默認埠 80
- https 默認埠443 (加了s更安全)
① 協議:不同的協議有不同的決議方式
②服務器ip:網路中存在無數的主機,要訪問哪一臺,通過公網ip區分 (我們常用是區域網,不使用公網ip)
③埠:一臺主機上運行著很多的行程,為了區分不同行程,一個埠對應一個行程,http默認的埠是80 (可以理解為這棟樓的層號)
④路徑:資源N多種,為了更進一步區分資源所在路徑(后端介面,一般稱為“介面路徑”,“介面”)【可以理解為這層樓的幾號房】

二、http超文本傳輸協議
1、協議
- 協議是一種約定,規定好一種資訊格式,如果發送方按照這種請求格式發送資訊,那么接收端就要按照這樣的格式決議資料,這就是協議,
- json協議
{ "name":"jack", "age":23 } - xml協議
<body> <name>jack</name> <age>234</age> </body> -
http超文本協議 (類似將寫的內容打包傳輸)
2、什么是http協議
-
-
即超?本傳送協議(Hypertext Transfer Protocol ),是Web聯?的基礎,也是?機PC聯?常?的協議之?,HTTP協議是建?在TCP協議之上的?種應?
-
HTTP連接最顯著的特點是客戶端發送的每次請求都需要服務器回送回應,從建?連接到關閉連接的程序稱為“?次連接”
-
HTTP請求-HTTP回應
-
回應碼:
- 1xx:資訊
- 2xx:成功 200 OK,請求正常
- 3xx:重定向 (一般會再給一個地址)
- 4xx:客戶端錯誤 404 Not Found 服務器?法找到被請求的?? (一般是客戶端的問題,前端)
- 5xx:服務器錯誤 503 Service Unavailable,服務器掛了或者不可用 (一般是服務端的問題,后端)

-
3、發展歷史
-
- http0.9-》http1.0-》http1.1-》http2.0
- 不多優化協議,增加更多功能
4、和https的關系
-
- Hyper Text Transfer Protocol over SecureSocket Layer
- 主要由兩部分組成:HTTP + SSL / TLS (加固的,更加安全)

- 比 HTTP 協議安全,可防止資料在傳輸程序中不被竊取、改變,確保資料的完整性,增加破解成本
- 缺點:相同網路環境下,HTTPS 協議會使頁面的加載時間延長近 50%,增加額外的計算資源消耗,增加 10%到 20%的耗電等;不過利大于弊,所以Https是趨勢,相關資源損耗也在持續下降
- 如果做軟體壓測:直接壓測內網ip,通過壓測公網域名,不管是http還是https,都會帶來額外的損耗導致結果不準確 (局域網可以無限擴增,公網有帶寬的影響)
三、超文本傳輸協議Http訊息體拆分
1、Http請求訊息結構
-
請求行
- 請求方法
- URL地址
- 協議名

-
請求頭
- 報文頭包含若干個屬性 格式為“屬性名:屬性值”,
- 服務端據此獲取客戶端的基本資訊

-
請求體
- 請求的引數,可以是json物件,也可以是前端表單生成的key=value&key=value的字符

2、Http回應訊息結構
-
-
回應行
- 報文協議及版本、狀態碼
-
回應頭
- 報文頭包含若干個屬性 格式為“屬性名:屬性值”
-
回應正文
- 回應報文體,我們需要的內容,多種形式比如html、json、圖片、視頻檔案等
-

四、HTTP的九種請求方法和回應碼
1、瀏覽器請求方法
-
-
http1.0定義了三種:
- GET: 向服務器獲取資源,比如常見的查詢請求
- POST: 向服務器提交資料而發送的請求 (登錄、提交表單) 【細分成put、patch、delete】
- Head: 和get類似,回傳的回應中沒有具體的內容,用于獲取報頭
-
http1.1定義了六種
- PUT:一般是用于更新請求,比如更新個人資訊、商品資訊全量更新
- PATCH:PUT 方法的補充,更新指定資源的部分資料
- DELETE:用于洗掉指定的資源
- OPTIONS: 獲取服務器支持的HTTP請求方法,服務器性能、跨域檢查等
- CONNECT: 方法的作用就是把服務器作為跳板,讓服務器代替用戶去訪問其它網頁,之后把資料原原本本的回傳給用戶,網頁開發基本不用這個方法,如果是http代理就會使用這個,讓服務器代理用戶去訪問其他網頁,類似中介
- TRACE:回顯服務器收到的請求,主要用于測驗或診斷
-
2、Http回應碼
-
- 瀏覽器向服務器請求時,服務端回應的訊息頭里面有狀態碼,表示請求結果的狀態
-
-
分類
-
1XX: 收到請求,需要請求者繼續執行操作,比較少用
-
2XX: 請求成功,常用的 200
-
3XX: 重定向,瀏覽器在拿到服務器回傳的這個狀態碼后會自動跳轉到一個新的URL地址,這個地址可以從回應的Location首部中獲取;
-
好處:網站改版、域名遷移等,多個域名指向同個主站導流
-
必須記住
- 301:永久性跳轉,比如域名過期,換個域名
- 302:臨時性跳轉(例如:百度呼叫的會使用會重定位到百度安全驗證里面)
-
-
4XX: 客戶端出錯,請求包含語法錯誤或者無法完成請求 (前端問題,客戶端)
-
必須記住
- 400: 請求出錯,比如語法協議
- 403: 沒權限訪問
- 404: 找不到這個路徑對應的介面或者檔案
- 405: 不允許此方法進行提交,Method not allowed,比如介面一定要POST方式,而你是用了GET
-
-
5XX: 服務端出錯,服務器在處理請求的程序中發生了錯誤(后端問題,服務端,一般要看服務端的日志)
-
必須記住
- 500: 服務器內部報錯了,完成不了這次請求
- 503: 服務器宕機
-
-
-
五、 Http請求頭
-
http請求分為三部分:請求行,請求頭, 請求體
-
請求頭
- 報文頭包含若干個屬性 格式為“屬性名:屬性值”,
- 服務端據此獲取客戶端的基本資訊
-
常見的請求頭
-
Accept: 覽器支持的 MIME 媒體型別, 比如 text/html,application/json,image/webp,/ 等(告訴服務端所能接收的型別 (大類)/(小類) )
-
Accept-Encoding: 瀏覽器發給服務器,宣告瀏覽器支持的編碼型別,gzip, deflate
-
Accept-Language: 客戶端接受的語言格式,比如 zh-CN
-
Connection: keep-alive , 開啟HTTP持久連接 (長鏈接)
-
Host:服務器的域名
-
Origin:告訴服務器請求從哪里發起的,僅包括協議和域名 CORS跨域請求中可以看到response有對應的header,Access-Control-Allow-Origin
-
Referer:告訴服務器請求的原始資源的URI,其用于所有型別的請求,并且包括:協議+域名+查詢引數; 很多搶購服務會用這個做限制,必須通過某個入來進來才有效(重定向:來源)
-
User-Agent: 服務器通過這個請求頭判斷用戶的軟體的應用型別、作業系統、軟體開發商以及版本號、瀏覽器內核資訊等; 風控系統、反作弊系統、反爬蟲系統等基本會采集這類資訊做參考
-
Cookie: 表示服務端給客戶端傳的http請求狀態,也是多個key=value形式組合,比如登錄后的令牌等(后續請求會把Cookie帶過去,服務端就會看http這個請求頭的Cookie是否是正確的,是的話才給訪問對應的資源)
-
Content-Type: HTTP請求提交的內容型別,post提交時才需要設定,比如檔案上傳,表單提交、json等(告訴服務端提交的型別)
- form表單提交:application/x-www-form-urlencoded
- json方式提交:application/json
-
六、 Http回應頭
-
回應頭
- 報文頭包含若干個屬性 格式為“屬性名:屬性值”
-
常見的回應頭
- Allow: 服務器支持哪些請求方法
- Content-Length: 回應體的位元組長度
- Content-Type: 回應體的MIME型別(看請求和回應的型別是否一致)
- Content-Encoding: 設定資料使用的編碼型別
- Date: 設定訊息發送的日期和時間
- Expires: 設定回應體的過期時間,一個GMT時間,表示該快取的有效時間 (png等,一般作用就是節省帶寬)
- cache-control: Expires的作用一致,都是指明當前資源的有效期, 控制瀏覽器是否直接從瀏覽器快取取資料還是重新發請求到服務器取資料,優先級高于Expires,控制粒度更細,如max-age=240,即4分鐘
- Location:表示客戶應當到哪里去獲取資源,一般同時設定狀態代碼為3xx(重定向的位置)
- Server: 服務器名稱
- Transfer-Encoding:chunked 表示輸出的內容長度不能確定,靜態網頁一般沒,基本出現在動態網頁里面
- Access-Control-Allow-Origin: 定哪些站點可以參與跨站資源共享(前后端的協議 域名 埠一致才能去決議,如果任意一個不同就是跨域,瀏覽器就不去決議,這個就可以告訴允許哪些站點能跨域名共享的)
七、 Http常見請求/回應頭content-type內容型別
-
Content-type: 用來指定不同格式的請求回應資訊,俗稱 MIME媒體型別
-
常見的取值
- text/html :HTML格式
- text/plain :純文本格式
- text/xml : XML格式
- image/gif :gif圖片格式
- image/jpeg :jpg圖片格式
- image/png:png圖片格式
- application/json:JSON資料格式
- application/pdf :pdf格式(預覽)
- application/octet-stream :二進制流資料,一般是檔案下載
- application/x-www-form-urlencoded:form表單默認的提交資料的格式,會編碼成key=value格式
- multipart/form-data: 表單中需要上傳檔案的檔案格式型別(檔案上傳得用這個,后端才能識別)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/552645.html
標籤:其他
上一篇:如何用技術改變生活
下一篇:返回列表
