主頁 >  其他 > Http協議和決議實戰

Http協議和決議實戰

2023-05-17 07:55:42 其他

一、瀏覽器的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:一般是用于更新請求,比如更新個人資訊、商品資訊全量更新
      • PATCHPUT 方法的補充,更新指定資源的部分資料
      • 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

標籤:其他

上一篇:如何用技術改變生活

下一篇:返回列表

標籤雲
其他(159163) Python(38143) JavaScript(25431) Java(18048) C(15227) 區塊鏈(8267) C#(7972) AI(7469) 爪哇(7425) MySQL(7191) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5340) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4572) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2433) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1975) 功能(1967) Web開發(1951) HtmlCss(1937) python-3.x(1918) C++(1917) 弹簧靴(1913) xml(1889) PostgreSQL(1878) .NETCore(1861) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • Http協議和決議實戰

    一、瀏覽器的B-S架構和C-S架構 1、C-S架構:客戶機-服務器,簡單點就是需要下載的軟體,相關資源(圖片、視頻等會比較流暢),但是也缺少通用性(各種手機兼容),系統維護性,升級需要重新設計和開發,增加了維護和管理的難度。 2、B-S架構:瀏覽器和服務器架構模式,WEB瀏覽器是客戶端最主要的應用軟 ......

    uj5u.com 2023-05-17 07:55:42 more
  • 如何用技術改變生活

    搞了那么多年的開發,最后發現關注程式員群體的人還挺少的,我這里把遇到的問題和解決方案分享一下,希望能碰撞出不同的火花。
    誰都希望生活更好一點,我也希望,同時,我也在做這樣的事情,希望有更多的人會更好,也讓我學習和借鑒一下。 ......

    uj5u.com 2023-05-17 07:55:01 more
  • [SWPUCTF 2021 新生賽]ez_unserialize

    題目在哪呢?查看源代碼試試 User-agent: * Disallow: 什么東西呢 發現disallow Robots 協議(也稱為爬蟲協議、機器人協議等)的全稱是 “網路爬蟲排除標準”(Robots Exclusion Protocol),網站通過 Robots 協議告訴搜索引擎哪些頁面可抓, ......

    uj5u.com 2023-05-17 07:54:32 more
  • UE5 材質 雨滴shader

    潮濕效果 物體表面是如何變濕的? 物體表面吸水使顏色變深 潮濕的顏色會變得暗淡且飽和 實作 增加飽和度且變暗 潮濕的物體表面的特點 當水作用在材質表面,材質表面的==specualr==會略微變弱且==粗糙度==會大幅降低 對于積水的表面,我們設定它的roughness = 0.07, specua ......

    uj5u.com 2023-05-17 07:49:09 more
  • 測驗人員轉型是大勢所趨:我的十年自動化測驗經驗分享

    做測驗十多年,有不少人問過我下面問題:
    現在的手工測驗真的不行了嗎?
    測驗工程師,三年多快四年的經驗,入門自動化測驗需要多久?
    自學自動化測驗到底需要學哪些東西? ......

    uj5u.com 2023-05-17 07:47:08 more
  • 00后面試華為軟體測驗工程師,竭盡全力拿到15K

    前兩輪,根據不同企業,或有或無,但最后一個技術面試是企業了解你“行不行”的關鍵環節,每個企業都會有的。
    在平時的學習、作業中一定要善于總結,如果回答不好,面試官會認為你技術能力有限或者不勤于思考,是很容易被pass掉的。 ......

    uj5u.com 2023-05-17 07:46:20 more
  • UE5 材質 雨滴shader

    潮濕效果 物體表面是如何變濕的? 物體表面吸水使顏色變深 潮濕的顏色會變得暗淡且飽和 實作 增加飽和度且變暗 潮濕的物體表面的特點 當水作用在材質表面,材質表面的==specualr==會略微變弱且==粗糙度==會大幅降低 對于積水的表面,我們設定它的roughness = 0.07, specua ......

    uj5u.com 2023-05-17 07:34:52 more
  • 統計學習方法筆記-感知機學習方法

    感知機(Perceptron) 1.感知機模型 1.1感知機定義 ? 輸入空間$ \mathcal{X} \subseteq \mathbb{R}^n$ ,輸出空間$\mathcal{Y}$={+1, -1} ; ? 輸入$x \in \mathcal{X}$表示的實體的特征向量,對應于輸入空間的點 ......

    uj5u.com 2023-05-16 20:44:39 more
  • 云端煉丹,算力白嫖,基于云端GPU(Colab)使用So-vits庫制作AI特朗

    人工智能AI技術早已深入到人們生活的每一個角落,君不見AI孫燕姿的歌聲此起彼伏,不絕于耳,但并不是每個人都擁有一塊N卡,沒有GPU的日子總是不好過的,但是沒關系,山人有妙計,本次我們基于Google的Colab免費云端服務器來搭建深度學習環境,制作AI特朗普,讓他高唱《國際歌》。 Colab(全名C ......

    uj5u.com 2023-05-16 20:36:23 more
  • 程式員不得不了解的計算機進制轉換

    程式員不得不了解的計算機進制轉換 最近在備考軟考的軟體設計師考試,學到了關于計算機的資料表示,由于我是半路出家學的Java,導致計算機基礎知識很差,在這里記錄一下學習感受 為啥要用二進制 早期計算機的存盤介質是晶體管,晶體管根據電壓不同,只能表示2種狀態,也就是0和1 計算機使用二進制運算更加方便 ......

    uj5u.com 2023-05-16 20:35:46 more