HTTP 协议<1>

目录

认识HTTP协议

HTTP协议的基本格式

URL encode

认识方法

认识HTTP协议

HTTP(: HyperText Transfer Protocol,超文本传输协议),是使用非常广泛的应用层协议

当我们访问浏览器的使用,可以通过访问”网址”,来获取相应的网页,在这个过程中,实际上就使用了HTTP协议,如果对TCP/IP了解就知道,数据能从客户端进程经过路径选择传送到服务器进程,但是数据从A传到B还没完,要想利用这些数据,我们还得知道用户层协议,用户层协议可以理解成数据的说明书.

HTTP 协议<1>

HTTP协议的基本格式

HTTP协议是文本格式的协议,可以通过Chrome开发者工具或者”抓包”工具来获取,所谓抓包工具,就是在获取请求和相应的HTTP协议.它就相当于数据的”代理”,浏览通过访问sogou.com 时,就会把HTTP 请求先发给Fiddler, Fiddler 再把请求转发给sogou 的服务器. 当 sogou 服务器返回数据时, Fiddler 拿到返回数据,再把数据交给浏览器.因此可以通过抓包工具,查看浏览器和服务器交互的数据细节.

下面我使用Fiddler抓包工具来打开百度时的登录 请求/相应,可以看一下的HTTP协议的格式

HTTP 协议<1>

HTTP 协议<1>

HTTP 协议<1>

请求:

1.包含首行 方法 URL 版本号

2.请求头 header,由键值对组成,每个键值对由空行分隔,用”:”来分割键和值

3.空行,相当于报头部分和正文之间的分隔符,作为”报头的结束标志.

4.正文body,承载一些具体数据,可能是json等格式

相应:

1.首行 版本号 状态码描述

2.响应头

3.空行

4.正文

请求与相应格式基本差不多,但是如果仔细观察,你会发现,请求格式第一部分中包含URL

什么是URL

我们平时用的网址,实际上就是URL(Uniform Resource Locator,统一资源定位符).

HTTP 协议<1>

http协议方案名,也可能是https,jdbc等等.

user:pass: 登录信息
v.bitedu.vip: 这里是域名,可以通过DNS解析成IP地址
端口号:端口号属于传输协议的一部分,数据通过 I/P 地址发送对应的数据到指定设备上,而通过端口号把数据发送到指定的服务或程序上。
/personInf/student:带层次的文件路径
userId = 1000 & clasId = 100;查询字符串(query string),本质是一个键值对结构,键值对之间使.用 & 分隔.键和值之间使用=分隔.(query string 中的内容是键值对结构. 其中的 key 和 value 的取值和个数, 完全都是程序猿自己约定的. 我们可以通过这样的方式来自定制传输我们需要的信息给服务器.)
片段标识:此URL中省略了片段标识,主要用于页面内跳转.

URL encode

用于对一些字符的URL字符的转码,以为URL中有时候包含一些特殊字符,这些特殊字符已经被URL解析成特殊的意思,所以为了区分开意思,就有了URL encode来转码,(例如”+”被转译成”%2B”,所以在URL上,如果出现了C++,就会转译成c%2B%2B.)在浏览器中也可以找到相应的逆过程,解码成相应的字符.其中urldecode就是urlencode逆过程.(一个中文字符由 UTF-8 或者 GBK 这样的编码方式构成, 虽然在 URL 中没有特殊含义, 但是仍然需要进行转义. 否则浏览器可能把 UTF-8/GBK 编码中的某个字节当做 URL 中的特殊符号)

认识方法

HTTP方法包括GET,POST,PUT,HEAD,DELETE,OPTIONS,TRACE,CONNECT,LINK,UNLINE

1.GET方法

但是最常用的就是GET方法,常用于 获取服务器上的资源,在浏览器中输入URL,就会触发GET请求,HTML中的link,img,scipt等标签也会触发GET请求.

GET请求的特点

1> 首行第一部分是GET

2>URL中的query string可以为空

3>body一般为空,也可以不为空,需要传递的数据通过query string 传递.

4.根据RFC 2616标准,没有对URL的长度有任何限制,这也取决于浏览器的实现和HTTP服务器端的实现.而且在服务器端,长度可以配置.浏览器支持的长度也比较长.

5.GET请求一般是幂等的,多次请求得到的结果一样,就视为幂等的.

6.GET可以被缓存(因为GET请求时幂等的),浏览器为了节省空间,会储存上次请求相应的结果保存到硬盘里.

2.POST方法

POST方法也是一种常见的方法,多用于用户 提交数据给服务器,例如登录页面的过程

POST请求的特点

1> 首行第一部分是POST

2>POST 中URL的 query string 一般为空, 需要传递的数据通过 body 传递

3>body部分一般不为空,.body 内的数据格式通过header 中的Content -Type 指定. body 的长度由 header 中的Content -Length 指定.

4.POST请求一般不是幂等的

5.POST不能被缓存

HTTP其他的方法使用的比较少,所以在这不再介绍了.

Original: https://blog.csdn.net/m0_64332179/article/details/127802669
Author: 诚挚的乔治
Title: HTTP 协议<1>

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/654107/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球