当前位置: 首页 > news >正文

【网络协议】应用层协议--HTTP

文章目录

  • 一、HTTP是什么?
  • 二、HTTP协议工作过程
  • 三、HTTP协议
    • 1. fiddler
    • 2. Fiddler抓包的原理
    • 3. 代理服务器是什么?
    • 4. HTTP协议格式
      • 1.1 请求
      • 1.2 响应
  • 四、认识HTTP的请求
    • 1.认识HTTP请求的方法
    • 2.认识请求头(header)
    • 3.认识URL
      • 3.1 URL是什么?
      • 3.2 URL的格式
    • 4.关于URL encode
  • 五、认识Cookie
    • 1.Cookie是什么?
    • 2.Cookie中存储的是什么?
    • 3.Cookie从哪里来的?
    • 4.Cookie到哪里去?
    • 5.Cookie的作用?
    • 6.Cookie的典型应用场景
  • 七、认识响应
    • 1.状态码

一、HTTP是什么?

HTTP(超文本传输协议,Hypertext Transfer Protocol)是一种用于从网络传输超文本到本地浏览器的传输协议。它定义了客户端与服务器之间请求和响应的格式。HTTP 工作在 TCP/IP 模型之上,通常使用端口 80。

HTTP不是互联网,也不是一种编程语言,是一种协议。HTTP通常跑在TCP/IP协议之上,依靠IP协议实现寻址和路由,TCP实现可靠数据传输,DNS协议实现域名查找,SSL/TLS协议实现安全通信。

二、HTTP协议工作过程

当我们在浏览器中输⼊⼀个 “⽹址”, 此时浏览器就会给对应的服务器发送⼀个 HTTP 请求. 对⽅服务器收到这个请求之后, 经过计算处理, 就会返回⼀个 HTTP 响应
在这里插入图片描述
当然,整个过程并不仅仅只是一次请求和响应。

三、HTTP协议

为了更好的了解HTTP协议,我们借助一个工具来帮助我们学习。

1. fiddler

Fiddler是位于客户端和服务器端的HTTP代理(proxy)。

Fiddler是目前最常用的http抓包工具之一 。

Fiddler能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点(breakpoint)、调试web应用、修改请求(request)的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。

既然是代理,也就是说:客户端的所有请求都要先经过Fiddler,然后转发到相应的服务器,反之,服务器端的所有响应(response),也都会先经过Fiddler然后发送到客户端,基于这个原因,Fiddler支持所有可以设置http代理为127.0.0.1:8888的浏览器和应用程序。

在这里插入图片描述

  • 左侧是所有的HTTP请求和响应
  • 右侧上方显示的是HTTP请求的报文内容
  • 右侧下方显示的是HTTP响应的报文内容

2. Fiddler抓包的原理

fiddler是以代理web服务器形式工作的,它使用代理地址:127.0.0.1 端口:8888
在这里插入图片描述
要搞清楚抓包的原理,就先要理解什么是代理服务器

3. 代理服务器是什么?

Web 代理(Proxy Server)服务器是网络的中间实体。代理位于 Web 客户端和 Web 服 务器之间,扮演“中间人”的角色。

HTTP 的代理服务器既是 Web 服务器又是 Web 客户端。
在这里插入图片描述
代理服务器的作用

  1. 共享网络。能解决只有一条线路,一共公有IP的问题,解决了公有IP资源不足时,满足局域网内大量用户上网的需求。
  2. 提高速度。代理服务器中有着缓冲区,当客户端发出请求时,不必要再将响应发送到Web服务器,直接从代理服务器的缓冲区中获取,调高了网络的访问速度。
  3. 突破访问限制。当客户端没有权限获取到服务器的数据时,选择有权限的代理服务器来获取数据/
  4. 提高安全性。客户端需要获取数据时,并不需要自己发出请求,而是请求代理服务器代替自己发送请求,这样别人根据请求来查询时,也查询不到客户端的上。

4. HTTP协议格式

HTTP是一个文本格式的协议

1.1 请求

一共HTTP报文大致分为四个部分

  1. 首行
    首行右包含三个部分
    ①请求的方法 GET POST 、、、
    ②请求的URL(请求对方的网址)
    ③版本号

  2. 请求头(header)
    header中的数据,其实上键值对
    键和值之间使用:分割。

  3. 空行
    类似于链表中的null

  4. 正文 (body)
    正文是可选的,可以没有正文。

我们以Bing这个网页的包来解释一下上述内容
为了方便观察 我们在fiddler中点击View in Notepad
在记事本中观察
因为HTTP协议是文本格式的协议,所以在记事本中打开不是乱码。
在这里插入图片描述

  1. 首行
    GET https://cn.bing.com/?mkt=zh-CN&mkt=zh-CN&mkt=zh-CN HTTP/1.1
    请求方法: GET,意思是需要从这个网页获取数据
    URL: https://cn.bing.com/?mkt=zh-CN&mkt=zh-CN&mkt=zh-CN
    版本号: HTTP/1.1

  2. 请求头

Host: cn.bing.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/125.0.0.0 Safari/537.36 Edg/125.0.0.0
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.7
X-Edge-Shopping-Flag: 1
Sec-MS-GEC: 4197D3C3EF20FF6E61D626B01FE9DDA7D7972E2995450803FB5271602F6AB3E1
Sec-MS-GEC-Version: 1-125.0.2535.51
X-Client-Data: eyIxIjoiMTUiLCIxMCI6Ilwic3VxdnJuTk9GZ1pvWkttY0JXNjVPMjJBWnlTbElwN3NmUDBMYUxod2V3QT1cIiIsIjIiOiIxIiwiMyI6IjAiLCI0IjoiLTgxNTM0MjUxNzA2MjY2NTM3NzkiLCI1IjoiXCJuV2l3UnN4aUU2WjVqK2x1eHROalM1cUIzVDR3c3Awd0FkeGsxdTJEZHBJPVwiIiwiNiI6InN0YWJsZSIsIjciOiI3MjI4NDI5OTU5MTcyIiwiOSI6ImRlc2t0b3AifQ==
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
sec-ch-ua: "Microsoft Edge";v="125", "Chromium";v="125", "Not.A/Brand";v="24"
sec-ch-ua-mobile: ?0
sec-ch-ua-full-version: "125.0.2535.51"
sec-ch-ua-arch: "x86"
sec-ch-ua-platform: "Windows"
sec-ch-ua-platform-version: "15.0.0"
sec-ch-ua-model: ""
sec-ch-ua-bitness: "64"
sec-ch-ua-full-version-list: "Microsoft Edge";v="125.0.2535.51", "Chromium";v="125.0.6422.60", "Not.A/Brand";v="24.0.0.0"
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: _EDGE_V=1; MUID=05EEFCC58F99657F125EEF858EDA6460; MUIDB=05EEFCC58F99657F125EEF858EDA6460; SRCHD=AF=NOFORM; SRCHUID=V=2&GUID=DC23103C06F24C58A652CFBA84B289C7&dmnchg=1; ANON=A=8016725D490190FB30508287FFFFFFFF; _clck=12rys12|2|fdv|0|1311; MMCASM=ID=D6360B7F97314621981E86C3A17EA010; MSCCSC=1; MSPTC=IRK4kLSO_oLoJSaqthZvliomoKC2UpkNtBO04dBr7vM; TTRSL=en; ANIMIA=FRE=1; _TTSS_IN=hist=WyJ6aC1IYW5zIiwiZW4iLCJhdXRvLWRldGVjdCJd&isADRU=0; _TTSS_OUT=hist=WyJlbiIsInpoLUhhbnMiXQ==; _UR=QS=0&TQS=0; MicrosoftApplicationsTelemetryDeviceId=4949d5cf-5345-4f11-8dae-071cc52be5b7; EDGSRCHHPGUSR=CIBV=1.1686.0; mapc=rm=0; imgv=lodlg=3&gts=20240419; _tarLang=default=zh-Hans&newFeature=tonetranslation; _EDGE_S=SID=02C1376608726168209523EE095C608D; WLS=C=fe7352b1b958dc12&N=%e7%a3%8a%e4%b9%90; SRCHUSR=DOB=20230630&T=1716426032000; _Rwho=u=d&ts=2024-05-23; USRLOC=HS=1&ELOC=LAT=37.82394790649414|LON=112.54866790771484|N=%E5%B0%8F%E5%BA%97%E5%8C%BA%EF%BC%8C%E5%B1%B1%E8%A5%BF%E7%9C%81|ELT=2|&CLOC=LAT=37.819571365552434|LON=112.54555989996645|A=733.4464586120832|TS=240523022514|SRC=W&BID=MjQwNTIzMTAyNTEyXzE3MmQ1N2FlNjM3NjdiYWEwMDJmOGM1ZDM2ZjM5ZTUwZTU0Y2M5ZGE2MDQwNmJmODI1OTg5NzlkZDMyODY2ODM=; ABDEF=V=13&ABDV=13&MRNB=1716427500530&MRB=0; _HPVN=CS=eyJQbiI6eyJDbiI6NiwiU3QiOjAsIlFzIjowLCJQcm9kIjoiUCJ9LCJTYyI6eyJDbiI6NiwiU3QiOjAsIlFzIjowLCJQcm9kIjoiSCJ9LCJReiI6eyJDbiI6NiwiU3QiOjAsIlFzIjowLCJQcm9kIjoiVCJ9LCJBcCI6dHJ1ZSwiTXV0ZSI6dHJ1ZSwiTGFkIjoiMjAyNC0wNS0yM1QwMDowMDowMFoiLCJJb3RkIjowLCJHd2IiOjAsIlRucyI6MCwiRGZ0IjpudWxsLCJNdnMiOjAsIkZsdCI6MCwiSW1wIjo5MCwiVG9ibiI6MH0=; _C_ETH=1; dsc=order=BingPages; SRCHHPGUSR=SRCHLANG=zh-Hans&PV=15.0.0&BZA=0&BRW=XW&BRH=M&CW=1528&CH=790&SCW=1513&SCH=3013&DPR=1.3&UTC=480&DM=0&EXLTT=31&HV=1716428125&PRVCW=1528&PRVCH=790&IG=613E686F3E924A4BB69ABF12E5E20FB4&CIBV=1.1618.0&PR=1&CHTRSP=1&CHTSCRL=2; GC=l2DBoTd2iLxexgRnonOoZz_BKwh5kRhZtckidWRwM98Ile-7PwBPHAehzirZkCFqfrD4SBkmqKrm3UVWxs62hQ; _SS=SID=02C1376608726168209523EE095C608D&R=1368&RB=1368&GB=0&RG=0&RP=1365; ipv6=hit=1716431727986; _RwBf=mta=0&rc=1368&rb=1368&gb=0&rg=0&pc=1365&mtu=0&rbb=0.0&g=0&cid=&clo=0&v=25&l=2024-05-22T07:00:00.0000000Z&lft=0001-01-01T00:00:00.0000000&aof=0&o=0&p=MULTIGENREWARDSCMACQ202205&c=ML2357&t=5377&s=2023-05-29T09:25:41.8692867+00:00&ts=2024-05-23T01:35:26.0766272+00:00&rwred=0&wls=0&lka=0&lkt=0&TH=&dci=0&e=tFxK1qdAnAFNsgDS_DCXMXPXGdD4H_Wz2IZMHyHGhzl_8RHCPZUcO-X1NRBRux2sNaaVTcIYgTF6Rc8tOHI7Rw&A=8016725D490190FB30508287FFFFFFFF&wlb=0&aad=0&ccp=2&wle=1&ard=0001-01-01T00:00:00.0000000&rwdbt=0001-01-01T16:00:00.0000000-08:00&rwflt=0001-01-01T16:00:00.0000000-08:00&cpt=0; _U=101m5sLtyOW90KxA4BxsUaj3NKcBUAGpafosHTmLzUff8cQkqkItocgDNlIzlfZ7OcqXy7MvfvK6NHIO0nh6ugNn3-lAiUNQ-Vpo0JqyornrUXO-8HgTt-9DUHGGcpOJMu_vsyXHg0xQVREuSsjsujB5WmJKIIpvWkaD5wyV1CpVQUst-kR3-LTyeAjPsgtKu1s4OxJlaZHbDAvt4gCI49GQ8RlXbNuCsdZFT9NM_BiY; SNRHOP=TS=638520281673712560&I=1
  1. 空行
    4.body
    这个包没有body

1.2 响应

  1. 首行
    首行右包含三个部分
    ①版本号
    ②状态码
    ③状态码描述
  2. 报头(header)
  3. 空行
  4. 正文

在这里插入图片描述

  • 首行
    HTTP/1.1 200 OK
    版本号 HTTP/1.1
    状态码: 200
    状态码描述: OK
  • header
Cache-Control: private
Content-Type: text/html; charset=utf-8
Vary: Accept-Encoding
P3P: CP="NON UNI COM NAV STA LOC CURa DEVa PSAa PSDa OUR IND"
Set-Cookie: SNRHOP=I=&TS=; domain=.bing.com; path=/; secure; SameSite=None
Set-Cookie: MUIDB=05EEFCC58F99657F125EEF858EDA6460; expires=Tue, 17-Jun-2025 02:34:56 GMT; path=/; HttpOnly
Set-Cookie: ULC=; domain=.bing.com; expires=Wed, 22-May-2024 02:34:56 GMT; path=/; secure; SameSite=None
Set-Cookie: _HPVN=CS=eyJQbiI6eyJDbiI6NiwiU3QiOjAsIlFzIjowLCJQcm9kIjoiUCJ9LCJTYyI6eyJDbiI6NiwiU3QiOjAsIlFzIjowLCJQcm9kIjoiSCJ9LCJReiI6eyJDbiI6NiwiU3QiOjAsIlFzIjowLCJQcm9kIjoiVCJ9LCJBcCI6dHJ1ZSwiTXV0ZSI6dHJ1ZSwiTGFkIjoiMjAyNC0wNS0yM1QwMDowMDowMFoiLCJJb3RkIjowLCJHd2IiOjAsIlRucyI6MCwiRGZ0IjpudWxsLCJNdnMiOjAsIkZsdCI6MCwiSW1wIjo5MywiVG9ibiI6MH0=; domain=.bing.com; expires=Sat, 23-May-2026 02:34:56 GMT; path=/; secure; SameSite=None
X-EventID: 664eab502f73471691f8e94f2dbab8cc
Accept-CH: Sec-CH-UA-Bitness, Sec-CH-UA-Arch, Sec-CH-UA-Full-Version, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Platform, Sec-CH-UA, UA-Bitness, UA-Arch, UA-Full-Version, UA-Mobile, UA-Model, UA-Platform-Version, UA-Platform, UA
UserAgentReductionOptOut: A7kgTC5xdZ2WIVGZEfb1hUoNuvjzOZX3VIV/BA6C18kQOOF50Q0D3oWoAm49k3BQImkujKILc7JmPysWk3CSjwUAAACMeyJvcmlnaW4iOiJodHRwczovL3d3dy5iaW5nLmNvbTo0NDMiLCJmZWF0dXJlIjoiU2VuZEZ1bGxVc2VyQWdlbnRBZnRlclJlZHVjdGlvbiIsImV4cGlyeSI6MTY4NDg4NjM5OSwiaXNTdWJkb21haW4iOnRydWUsImlzVGhpcmRQYXJ0eSI6dHJ1ZX0=
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Content-Security-Policy-Report-Only: script-src https: 'strict-dynamic' 'report-sample' 'nonce-fWmaw5xsqvy53eO2VA5N6ZU05BxtyaHo8PHUZq44VIQ='; base-uri 'self';report-to csp-endpoint
Report-To: {"group":"csp-endpoint","max_age":86400,"endpoints":[{"url":"https://aefd.nelreports.net/api/report?cat=bingcsp"}]}
Report-To: {"group":"network-errors","max_age":604800,"endpoints":[{"url":"https://aefd.nelreports.net/api/report?cat=binghp&ndcParam=QUZE"}]}
Report-To: {"group":"crossorigin-errors","max_age":604800,"endpoints":[{"url":"https://aefd.nelreports.net/api/report?cat=binghp"}]}
nel: {"report_to":"network-errors","max_age":604800,"success_fraction":0.01,"failure_fraction":1.0,"include_subdomains":true}
cross-origin-embedder-policy-report-only: 'same-origin; report-to=\"crossorigin-errors\"'
cross-origin-opener-policy-report-only: 'require-corp; report-to=\"crossorigin-errors\"'
X-Cache: CONFIG_NOCACHE
X-MSEdge-Ref: Ref A: 866F0EDCE46A4E88AD8C2469829FAE1F Ref B: BJ1EDGE0618 Ref C: 2024-05-23T02:34:56Z
Date: Thu, 23 May 2024 02:34:55 GMT
Content-Length: 138035
  • 空行
  • 正文
    这里展示一部分
<!doctype html><html lang="zh" dir="ltr"><head><meta name="theme-color" content="#4F4F4F" /><meta name="description" content="必应可帮助你将理论付诸实践,使得搜索更加方便快捷,从而达到事半功倍的效果。" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta property="fb:app_id" content="3732605936979161" /><meta property="og:type" content="website" /><meta property="og:title" content="寻找一个“庇护所”" /><meta property="og:image" content="https://www.bing.com/th?id=OHR.IndianStarTortoise_ZH-CN7177478610_tmb.jpg&amp;rf=" /><meta property="og:image:width" content="1366" /><meta property="og:image:height" content="768" /><meta property="og:url" content="https://www.bing.com/?form=HPFBBK&amp;ssd=20240522_1600&amp;mkt=zh-CN" /><meta property="og:site_name" content="必应" /><meta property="og:description" content="这才是真正的明星!印度星龟迈着自信而缓慢的脚步走进了大家的视野里。今天是世界海龟日!自2000年以来" /><title>必应</title><link rel="icon" href="/sa/simg/favicon-trans-bg-blue-mg-png.png" /><link rel="preload" href="https://s.cn.bing.net/th?id=OHR.IndianStarTortoise_ZH-CN7177478610_1920x1080.webp&amp;qlt=50" as="image" id="preloadBg"  /><link rel="preload" href="/rp/lmu8EBCaPRMKtay8LSArGyY3mv4.br.js" as="script"  /><link rel="preload" href="/rp/lmu8EBCaPRMKtay8LSArGyY3mv4.br.js" as="script"  /><link rel="preconnect" href="https://r.bing.com" /><link rel="preconnect" href="https://r.bing.com" crossorigin/><link rel="dns-prefetch" href="https://r.bing.com" /><link rel="dns-prefetch" href="https://r.bing.com" crossorigin/><style type="text/css">#idCont #id_h #id_qrcode{background-repeat:no-repeat;background-position:center center;height:39px;width:20px;margin:auto 16px}#idCont #id_h #id_qrcode.active~#id_qrcode_popup_positioner{visibility:visible}#idCont #id_h #id_qrcode.active::before,#idCont #id_h #id_qrcode.active::after{opacity:0}#idCont #id_h #id_qrcode_popup_positioner{visibility:hidden;position:relative;width:0;height:0;top:52px;right:16px}#idCont #id_h #id_qrcode_popup_positioner #id_qrcode_popup_container{width:97px;background:#fff;display:flex;flex-direction:column;align-items:center;position:relative;padding:26px 14px 14px;transform:translateX(-100%);box-shadow:2px 2px 12px 3px rgba(0,0,0,.2);border-radius:6px}#idCont #id_h #id_qrcode_popup_positioner 

在这里插入图片描述
空行存在的意义是什么?
首先我们要清楚,HTTP只是应用层的协议,在网络通信中,是需要发送方各个层级之间封装数据报,再到接受方各个层级直接对数据报进行解析分用的。
HTTP在传输层依靠的是TCP协议,而TCP协议是面向字节流的,这里就涉及到TCP协议中的粘包问题了。
在HTTP协议中,并没有规定键值对的数量,这样就不知道数据从哪结束,这样的空行就相当于是结束符/分隔符,告诉计算机从这儿结束,从而对粘包问题的一点处理。

四、认识HTTP的请求

1.认识HTTP请求的方法

在这里插入图片描述

HTTP请求的首行里,就包含了方法作为首行的开头。
在这里插入图片描述
这里我们主要使用GET 和 POST
网上大部分请求都是GET
而传输文件、图片等操作可能会使用POST,因为这样的数据量一般都比较大,放在body部分更为合适。

GET和POST其实没有区别,GET可以使用的场景,POST也可以
同样,POST使用的场景,GET也可以完成。

但是要说区别,也还是可以‘鸡蛋里挑骨头’说出来几点的。

  1. 语义: 从语义方面来说
    GET 语义:从服务器获取数据
    POST语义:向服务器发送/提交数据

  2. 搭配: 从搭配方面来说
    GET 将要传输的数据通过写在query string来进行传输,一般不使用body
    POST 将要传输的数据写在body中,而不使用query string。

  3. 服务器要求:
    GET 服务器对于GET请求的设计,一般需要设计成”幂等“。
    POST 服务器 对于POST请求的设计一般不要求”幂等“。
    幂等:幂等就是一个执行操作,无论执行多少次,产生的效果和返回的结果都是一样的。

  4. GET获取到的请求可以缓存,可以被浏览器收藏(浏览器的收藏夹)缓存在硬盘上。
    POST一般不行

2.认识请求头(header)

认识请求也就是认识请求头(header)
在这里插入图片描述

请求头中是 一对一对的键值对。

在这里插入图片描述

  • Host: 请求对应主机的IP和端口号
Host: cn.bing.com
  • Content-Type: body中的数据类型
  • Content-Length: body中的数据长度(字节)
    为了解决粘包问题
  • User-Agent
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0

UA主要包含两个信息:

  1. 浏览器版本
  2. 操作系统版本

可以通过User-Agent来实现兼容,可以通过UA里面的信息来区分,来对显示的网页进行划分。(版本较低,显示的就少(简陋))

现如今UA的作用,已经有了新的用途。
例如根据用户的显示的大小来配置相关的页面。(小屏幕就将页面一行的内容减少,增加到列中,横屏模式和竖屏模式的转换)。

  • Referer: 表示当前的页面从哪个页面跳转来的。
    作用:广告商在网页投放广告时,可以根据此来判断广告点击的来源详情。以此来支付相应的费用。

  • Cookie: 浏览器提供给网页的一种可以持久化保存数据的机制。
    Cookie中也时一对对的键值对。其中都是程序员自定义的。

3.认识URL

3.1 URL是什么?

nternet上的每一个网页都具有一个唯一的名称标识,通常称之为URL(Uniform Resource Locator, 统一资源定位器)。它是www的统一资源定位标志,简单地说URL就是web地址,俗称“网址”。

3.2 URL的格式

协议://登陆信息@服务器地址:端口/路径?查询字符串#片段标识符
  • 协议: 常⻅的有 http 和 https, 也有其他的类型. (例如访问 mysql 时⽤的jdbc:mysql )
  • 登陆信息: 一般是 user:pass,即用户名:密码。但现在的网站进行身份认证是时一般不再通过URL进行,一般会省略。
  • 服务器地址: 如果是域名,会通过DNS系统解析成IP地址。
  • 端口: 是服务器端口。当端口号被省略时,浏览器会根据协议类型来决定使用什么端口,HTTP默认使用80端口,HTTPS默认使用443.
  • 路径: 带层次的文件路径。根据在网页中打开的文件而定。
  • 查询字符串(query string): 一对对的键值对。键和值之间用=分隔,键值对之间使用&分隔开。
  • 片段标识符: 片段标识符常用于网页内跳转。
    打开哔哩哔哩一个视频举例:
    在这里插入图片描述
https://www.bilibili.com/video/BV1ov4y1i7TZ/?spm_id_from=333.999.0.0&vd_source=2cfee88e0fd8f3da0e04085fe9ed6dd0

在这里插入图片描述

4.关于URL encode

我们在浏览器中搜索你是认真的吗?会发生什么呢?
在这里插入图片描述
在这里可能看不出区别,我们打开fiddler使用它来抓取这一请求。

下面是抓取的请求

GET https://cn.bing.com/search?q=%E4%BD%A0%E6%98%AF%E8%AE%A4%E7%9C%9F%E7%9A%84%E5%90%97%EF%BC%9F&form=QBLH&sp=-1&lq=0&pq=%E4%BD%A0%E6%98%AF%E8%AE%A4%E7%9C%9F%

我们可以看到
在这里插入图片描述
在这里插入图片描述

我们可以看到,URL中的query string 信息发生了变化。
通过查询,我们发现这一串%十六进制数就是字符串“你是认真的吗?”
在这里插入图片描述

那么为什么会出现这样的情况呢?

这是因为在URL的基本格式中,各个信息之间存在特定的分隔符,

协议://登陆信息@服务器地址:端口/路径?查询字符串#片段标识符

例如?后面就是查询字符串,#后面就是片段标识符。

如果我们搜索一段话 – 你是认真的吗?,如果就这样传入到URL中,那么这段话中的?和URL作为分割标准的?就互相冲突,我们要知道,计算机只识别指令,而不会分析语义。

那么为了解决可能存在的这一冲突,我们就传入转码之后的数字

问题又来了?

汉字进行解码后,这些解码后的数字连在一起,如果计算机在识别时将原本属于两个汉字转码后的数字错误的拼接在一起,凑巧成了? # // 这些特殊符号的转码数字那该怎么办呢?

画图说明问题

在这里插入图片描述
可能会和TCP一样出现“粘包问题”,那么为了解决这个问题,就推出了url encode编码

将需要转码的字符转为16进制,每个16进制之间使用分隔开,那么在解析URL时,就会知道这里时需要转码的字符。

效果如下:
在这里插入图片描述

五、认识Cookie

1.Cookie是什么?

Cookie是一种服务器发送给浏览器的数据块,以文本文件的方式存储在客户端计算机上。它通常包含有关用户的信息,如用户ID、密码、浏览历史等,但出于安全考虑,通常不会存储敏感信息。

2.Cookie中存储的是什么?

浏览器提供给网页的一种可以持久化保存数据的机制。

Cookie中的键值对是按照域名分别来进行存储。
在这里插入图片描述
在这里插入图片描述

Cookie存储的都是键值对,而键值对的内容只有设计的程序员才知道是什么意思。

3.Cookie从哪里来的?

Cookie都是从服务器来的。
服务器返回http响应时,header中会有set-cookie,就会把set-cookie中的键值对存放到cookie中。

4.Cookie到哪里去?

Cookie保存到浏览器后,后续浏览器访问该网站时,就会在请求header中,把之前Cookie中的键值对都给带进去,还要再发回给服务器。

能够使客户端存储一些”配置“信息,从而让服务器提供更多的”个性化的“服务。

5.Cookie的作用?

  1. 会话管理(Session Management): Cookie最常见的用途是帮助网站识别并跟踪用户。当用户首次访问网站时,服务器会发送一个Cookie到用户的计算机上。当该用户再次访问该网站时,浏览器会将该Cookie发送回服务器,这样服务器就能识别出用户并记住他们的偏好或登录状态。
  2. 个性化定制(Personalization): 通过读取Cookie,网站可以根据用户的偏好和行为来定制内容。例如,一个新闻网站可能会记住用户感兴趣的新闻类别,并在他们再次访问时显示相关内容。
  3. 跟踪和分析(Tracking and Analytics): 网站可以使用Cookie来跟踪用户的浏览行为,以收集关于用户如何使用网站的数据。这些数据对于改进网站设计、了解用户需求以及进行市场研究都非常重要。
  4. 广告推送(Advertising): Cookie还可以用于在线广告推送。通过分析用户的浏览行为和偏好,广告商可以向用户展示与他们兴趣相关的广告。

6.Cookie的典型应用场景

理解登录过程
在这里插入图片描述

七、认识响应

在这里插入图片描述

1.状态码

描述了这次HTTP请求是否成功,以及失败的原因

  • 200 OK
    这次访问成功了。
  • 404 Not Fund
    客户端请求的资源在服务器不存在
  • 403 Forbidden
    客户端权限不足,被禁止访问
  • 405 Method Not Allowed
    请求中的方法,服务器不支持
  • 500 Internal Server Error
    服务器内部错误
  • 504 Gateway Timeout
    服务器访问超时 Gateway:网关
  • 302 Move temporarily
    临时重定向
    访问某个地址时,访问的是旧地址,自动跳转到新地址。
  • 301 Moved Permanently
    永久重定向
    当浏览器收到这种响应时, 后续的请求都会被⾃动改成新的地址.
    302和301的区别:301每次都需要请求,来跳转到新地址
    而302直接缓存新地址,当访问旧地址时直接旧跳转到新地址了。

在这里插入图片描述


以上就是本文所有内容,如果对你有帮助的话,点赞收藏支持一下吧!💞💞💞

相关文章:

【网络协议】应用层协议--HTTP

文章目录 一、HTTP是什么&#xff1f;二、HTTP协议工作过程三、HTTP协议1. fiddler2. Fiddler抓包的原理3. 代理服务器是什么?4. HTTP协议格式1.1 请求1.2 响应 四、认识HTTP的请求1.认识HTTP请求的方法2.认识请求头&#xff08;header&#xff09;3.认识URL3.1 URL是什么&…...

【图书推荐】《Vue.js 3.x+Element Plus从入门到精通(视频教学版)》

配套示例源码与PPT课件下载 百度网盘链接: https://pan.baidu.com/s/1nBQLd9UugetofFKE57BE5g?pwdqm9f 自学能力强的&#xff0c;估计不要书就能看代码学会吧。 内容简介 本书通过对Vue.js&#xff08;简称Vue&#xff09;的示例和综合案例的介绍与演练&#xff0c;使读者…...

抖店如何打造出爆品?学好这几招,轻松打爆新品流量

大家好&#xff0c;我是电商花花。 近年来&#xff0c;抖店商家越来越多&#xff0c;而选品&#xff0c;爆品就是我们商家竞争的核心了&#xff0c;谁能选出好的新品&#xff0c;打造出爆品&#xff0c;谁的会赚的多&#xff0c;销量多。 做抖音小店想出单&#xff0c;想赚钱…...

软件需求规范说明模板

每个软件开发组织都会为自己的项目选用一个或多个标准的软件需求规范说明模板。有许多软件需求规范说明模板可以使用(例如ISO/IEC/IEEE2011;Robertson and Robertson2013)。如果你的组织要处理各种类型或规模的项目&#xff0c;例如新的大型系统开发或是对现有系统进行微调&…...

vs2013使用qt Linguist以及tr不生效问题

一、qt Linguist&#xff08;语言家&#xff09;步骤流程 1、创建翻译文件,在qt选项中 2.选择对应所需的语言&#xff0c;得到.ts后缀的翻译文件 3.创建.pro文件&#xff0c;并将.ts配置在.pro文件中 3.使用qt Linguist 打开创建好的以.ts为后缀的翻译文件&#xff0c;按图所示…...

Leetcode 3163. String Compression III

Leetcode 3163. String Compression III 1. 解题思路2. 代码实现 题目链接&#xff1a;3163. String Compression III 1. 解题思路 这一题的话就是一个简单的贪婪算法&#xff0c;把相同的字符进行归并&#xff0c;然后按照题目中的表示方法进行表示一下即可。 2. 代码实现…...

Java匿名内部类的使用

演示匿名内部类的使用&#xff0c;很重要 package com.shedu.Inner;/*** 演示匿名内部类的使用*/ public class AnonymousInnerClass {//外部其他类public static void main(String[] args) {Outer04 outer04 new Outer04();outer04.method();} }class Outer04{//外部类priva…...

把自己的垃圾代码发布到官方中央仓库

参考博客&#xff1a;将组件发布到maven中央仓库-CSDN博客 感谢这位博主。但是他的步骤有漏缺&#xff0c;相对进行补充 访问管理页面 网址&#xff1a;Maven Central 新注册账号&#xff0c;或者使用github快捷登录&#xff0c;建议使用github快捷登录 添加命名空间 注意&…...

单机一天轻松300+ 最新微信小程序拼多多+京东全自动掘金项目、

现代互联网经济的发展带来了新型的盈利方式&#xff0c;这种方法通过微信小程序的拼多多和京东进行商品自动巡视&#xff0c;以此给商家带来增加的流量&#xff0c;同时为使用者带来利润。实践这一手段无需复杂操作&#xff0c;用户仅需启动相应程序&#xff0c;商品信息便会被…...

线性回归模型之套索回归

概述 本案例是基于之前的岭回归的案例的。之前案例的完整代码如下&#xff1a; import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import Ridge, LinearRegression from sklearn.datasets import make_regression from sklearn.model_selectio…...

解决文件夹打开出错问题:原因、数据恢复与预防措施

在我们日常使用电脑或移动设备时&#xff0c;有时会遇到一个非常棘手的问题——文件夹打开出错。这种错误可能会让您无法访问重要的文件和数据&#xff0c;给工作和生活带来极大的不便。本文将带您深入了解文件夹打开出错的原因&#xff0c;并提供有效的数据恢复方案&#xff0…...

Spring:面向切面(AOP)

1. 代理模式 二十三种设计模式中的一种&#xff0c;属于结构型模式。它的作用就是通过提供一个代理类&#xff0c;让我们在调用目标方法的时候&#xff0c;不再是直接对目标方法进行调用&#xff0c;而是通过代理类**间接**调用。让不属于目标方法核心逻辑的代码从目标方法中剥…...

本地镜像文件怎么导入docker desktop

docker tag d1134b7b2d5a new_repo:new_tag...

【机器学习-23】关联规则(Apriori)算法:介绍、应用与实现

在现代数据分析中&#xff0c;经常需要从大规模数据集中挖掘有用的信息。关联规则挖掘是一种强大的技术&#xff0c;可以揭示数据中的隐藏关系和规律。本文将介绍如何使用Python进行关联规则挖掘&#xff0c;以帮助您发现数据中的有趣模式。 一、引言 1. 简要介绍关联规则学习…...

Gradle筑基——Gradle Maven仓库管理

基础概念&#xff1a; 1.POM pom:全名Project Object Model 项目对象模型&#xff0c;用来描述当前maven项目发布模块的基础信息 pom主要节点信息如下&#xff1a; 配置描述举例&#xff08;com.android.tools.build:gradle:4.1.1&#xff09;groupId组织 / 公司的名称com.…...

c++11:智能指针的种类以及使用场景

指针管理困境 内存释放&#xff0c;指针没有置空&#xff1b;内存泄漏&#xff1b;资源重复释放 怎样解决&#xff1f; RAII 智能指针种类 shared_ptr 实现原理&#xff1a;多个指针指向同一资源&#xff0c;引用计数清零&#xff0c;再调用析构函数释放内存。 使用场景…...

RabbitMQ-默认读、写方式介绍

1、RabbitMQ简介 rabbitmq是一个开源的消息中间件&#xff0c;主要有以下用途&#xff0c;分别是&#xff1a; 应用解耦&#xff1a;通过使用RabbitMQ&#xff0c;不同的应用程序之间可以通过消息进行通信&#xff0c;从而降低应用程序之间的直接依赖性&#xff0c;提高系统的…...

阿里云百炼大模型使用

阿里云百炼大模型使用 由于阿里云百炼大模型有个新用户福利&#xff0c;有免费的4000000 tokens&#xff0c;我开通了相应的服务试试水。 使用 这里使用Android开发了一个简单的demo。 安装SDK implementation group: com.alibaba, name: dashscope-sdk-java, version: 2.…...

亲测有效,通过接口实现完美身份证号有效性验证+身份证与姓名匹配查询身份实名认证接口(实时)

最近发现一个限时认证的接口分享给大家&#xff0c;有需要的拿去试下吧. 附上部分密钥f478186edba9854f205a130aa888733d227a8f82f98d84b9【剩余约125450次&#xff0c;无时间限制】 b6131281611f6e1fc86c8662f549bdd683a68517203ba312【剩余约1300次&#xff0c;无时段限制】 …...

试题11 输出什么?

...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

Visual Studio Code 扩展

Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后&#xff0c;命令 changeCase.commands 可预览转换效果 EmmyLua…...