前端的知识伴随着博客系统这个项目的完结而告一段落,在接下来的博客中,将详细介绍如何将前后端连接起来,使得我们的博客系统更加牛逼
是应用层中最典型的协议,供浏览器和服务器,手机和杜武器,服务器和服务器之间交互
当我们在浏览器的搜索栏打了一堆字时,我们最终会得到一个网页,这就是我们的浏览器通过HTTP协议和服务器进行了通信
HTTP协议是一问一答模型的协议
HTTP请求包含一下几部分
HTTP响应包含一下几部分
我们可以用抓包工具来对自己电脑上的请求交互进行监测
抓包工具就相当于请了一个代理,浏览器和服务器之间的交流过程这个代理都一清二楚
正向代理:给客户端提供代理,服务器就不知道真正的客户端是谁了
反向代理: 给服务器提供代理,客户端就不知道真正的服务器是谁了
在这里,我使用charles抓包工具来演示一下抓包过程,具体使用技巧大家csdn搜索一下其他博客就好了
上面是请求,下面是响应
POST /EWS/Exchange.asmx HTTP/1.1 (首行)
Host: outlook.office365.com (请求头)
Content-Type: text/xml; charset=utf-8
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Accept: */*
User-Agent: AppleExchangeWebServices/827 AddressBookSourceSync/2536
Authorization: Bearer EwA4A+l3BAAUnQP8Jfa2FYxR0AX7HsEZwOdWa28AAWzrGeyPoiukqU7wsy2JdPTY09tC0Ep/rt5EoYpipplxLiE2WNA8PsGml2FJ655klYGDGOzcBQQD5KpvJKyWicJ6sVKR0DhYsIYovBJlcICjmTWEQIdqgX/v7qqRXXOSNK2LKwgngbP6crfIHw3PWH+MzpheP7BV16cvujPbcMOfml2V/4XTjK9VFjywZENj2KHmwMDGlTzVsQXNf+AXTdpmYWfj6DlATOvMukQG5Wa4qWimba3FZOwAVRlT2QGCANe4jhgqpJ/RffW3mfC7oAZkRzZVlRUJdlnyoyY/oDoL0PTm8FthdAbg/tiLPWDH5ju1pFTQfCvUNh9RSit+pUIDZgAACD16hZgyUdPMCAI7QauE0E8/x1e6+09ZblprB3YV6CbwbLYtCYdbxfTF9bAeLn43i0ojmJY60e9kMWsTnikTxhVdJE+LWhQsTJqmJuXziKbryHdPgnbRZbzfjVELSyeY/6kNUcGK/bO0/ADt9HXy61tSB/OpLQTahfWtevb00KE512dPdp07Jd3K1op0Wom8b0rdOQGSTkDIu2Sk0NbOLi8MYqVmyfo0jhAOT+rkTOr/NOytOUbOHwkW3ijIV+6+SWD7FA0xtN1fqEVhelymHWNSIu6UhQlGd7ZWXpaRyF51VL7UHuIZzc9pkHGzja88LZe1BaMn0rwUhT1nNX6hxQrYYI2dMkB+rFPWjCbWlznMjmL8T017YHNAyJ2pkGyzCOfvCEhOoVMnkgWcPzulG0g3pXNmHPdjFcyDyOFZR3fee0o9gTl/kP6+dugh7lyKQ/2+l7tl2/60wmxEBUqRjUg/Ddbl37zGkYwk92ndBmJ4RwlZPH5WwOWkyNn8BtU/bKxefywjgKJ8B2n7bNeaiV1zjtELndJlTB0V4T+/x1KRUETcTGxsNCyIpbND+T2va41kG0XP41Prac+VPzp4FeJHjjoEwO96yRW17HZ4M+NhORdnV14j/JI/E+Lib0zSQyyrGOlT6hhAMT5cOU4EbQieaQCnAku5L9WOhyoUqOdUjZEYAuC0BlvMeTDifo5Gg+/QOwI=
Content-Length: 612
Accept-Language: zh-CN,zh-Hans;q=0.9
IdOnly
(正文)
HTTP/1.1 200 OK (首行)
Cache-Control: private (响应报头)
Transfer-Encoding: chunked
Content-Type: text/xml; charset=utf-8
Server: Microsoft-IIS/10.0
request-id: 4a461ca8-c28c-77ec-1951-64fc8681f011
Alt-Svc: h3=":443",h3-29=":443"
X-CalculatedBETarget: TYCPR01MB5775.jpnprd01.PROD.OUTLOOK.COM
X-BackEndHttpStatus: 200
Set-Cookie: exchangecookie=01e2d2d1545c46f8b3545db3bccb666a; expires=Tue, 07-Nov-2023 01:13:38 GMT; path=/; secure; HttpOnly
X-RUM-Validated: 1
x-ms-appId: 000000004C28068C
x-EwsHandler: GetFolder
X-AspNet-Version: 4.0.30319
X-BeSku: WCS6
X-DiagInfo: TYCPR01MB5775
X-BEServer: TYCPR01MB5775
X-Proxy-RoutingCorrectness: 1
X-Proxy-BackendServerStatus: 200
X-FirstHopCafeEFZ: HND
X-FEProxyInfo: TY2PR0101CA0030.APCPRD01.PROD.EXCHANGELABS.COM
X-FEEFZInfo: HND
X-Powered-By: ASP.NET
X-FEServer: TY2PR0101CA0030
Date: Mon, 07 Nov 2022 01:13:37 GMT
Connection: keep-alive
NoError
(正文)
URL 唯一资源定位符,可以用来找网络上的资源
与之类似的还有
URI 唯一资源标识符,用来区分网络上的资源
URL具体由以下几部分构成
其中,如果URL中需要有一些特殊的字符,比如说 / @ ?等等这些已经用来作为分隔符的符号,那么这些符号将转换成% 加上十六进制的ascii码,这个过程称之为编码
用来说明HTTP请求的主要功能是什么,主要有以下几种方法
事实上,实际用的最多的只有GET和POST
以下几种情况会触发GET请求
特点:
GET请求的长度是没有限制的
body为空,querystring可以空,也可以不为空
因此,给浏览器传递参数,通常用querystring
产生POST的场景
特点:
URL中通常没有query string
因此,给浏览器传递参数,通常通过body
事实上,GET和POST并没有本质上的区别,我们使用上可以相互进行替代
细节上有下面的区别