HTTP协议

HTTP协议

1、介绍

HTTP:Hyper Text Transfer Protocol超文本传输协议。HTTP最大的作用就是确定了请求和响应数据的格式。浏览器发送给服务器的数据:请求报文;服务器返回给浏览器的数据:响应报文。

2、请求报文

①在开发者工具中浏览报文源码

image-20221110115240049

②请求报文的三个部分

./images

③请求行

作用:展示当前请求的最基本信息

POST /dynamic/target.jsp HTTP/1.1

  • 请求方式
  • 访问地址
  • HTTP协议的版本

④请求消息头

作用:通过具体的参数对本次请求进行详细的说明

格式:键值对,键和值之间使用冒号隔开

相对比较重要的请求消息头:

名称功能
Host服务器的主机地址
Accept声明当前请求能够接受的『媒体类型』
Referer当前请求来源页面的地址
Content-Length请求体内容的长度
Content-Type请求体的内容类型,这一项的具体值是媒体类型中的某一种
Cookie浏览器访问服务器时携带的Cookie数据

⑤请求体

作用:作为请求的主体,发送数据给服务器。具体来说其实就是POST请求方式下的请求参数。

格式:

[1]form data

含义:当前请求体是一个表单提交的请求参数。

image-20221110115930988

查看源码后,发现格式如下:

username=tom&password=123456

  • 每一组请求参数是一个键值对
  • 键和值中间是等号
  • 键值对之间是&号
[2]Request Payload

含义:整个请求体以某种特定格式来组织数据,例如JSON格式。

./images

3、请求方式

①HTTP协议已定义的请求方式

HTTP 请求方法,属于 HTTP 协议中的一部分,请求方法的作用是:用来表明 要对服务器上的资源执行的操作。最常用的请求方法是 GETPOST

HTTP1.1中共定义了九种请求方式:

5dc4222d8b2745aeb95c94fb9ee90983.png

②GET请求

  • 特征1:没有请求体
  • 特征2:请求参数附着在URL地址后面
  • 特征3:请求参数在浏览器地址栏能够直接被看到,存在安全隐患
  • 特征4:在URL地址后面携带请求参数,数据容量非常有限。如果数据量大,那么超出容量的数据会丢失
  • 特征5:从报文角度分析,请求参数是在请求行中携带的,因为访问地址在请求行

③POST请求

  • 特征1:有请求体
  • 特征2:请求参数放在请求体中
  • 特征3:请求体发送数据的空间没有限制
  • 特征4:可以发送各种不同类型的数据
  • 特征5:从报文角度分析,请求参数是在请求体中携带的
  • 特征6:由于请求参数是放在请求体中,所以浏览器地址栏看不到

4、媒体类型

①HTTP协议中的MIME类型

Multipurpose Internet Mail Extensions

②用途

为了让用户通过浏览器和服务器端交互的过程中有更好、更丰富的体验,HTTP协议需要支持丰富的数据类型。

③MIME类型定义参考

我们可以通过查看Tomcat解压目录下conf/web.xml配置文件,了解HTTP协议中定义的MIME类型。

<mime-mapping>
	<extension>mp4</extension>
	<mime-type>video/mp4</mime-type>
</mime-mapping>
<mime-mapping>
	<extension>doc</extension>
	<mime-type>application/msword</mime-type>
</mime-mapping>
<mime-mapping>
	<extension>json</extension>
	<mime-type>application/json</mime-type>
</mime-mapping>
<mime-mapping>
	<extension>html</extension>
	<mime-type>text/html</mime-type>
</mime-mapping>

从上面的例子中可以看出:MIME的基本格式是

大类/具体类型

MIME类型在HTTP报文中对应的是内容类型:Content-type

5、响应报文

./images

①响应状态行

HTTP/1.1 200 OK

  • HTTP协议版本
  • 响应状态码
  • 响应状态的说明文字

②响应消息头

  • 响应体的说明书。
  • 服务器端对浏览器端设置数据,例如:服务器端返回Cookie信息。
名称功能
Content-Type响应体的内容类型
Content-Length响应体的内容长度
Set-Cookie服务器返回新的Cookie信息给浏览器
location重定向的情况下,告诉浏览器访问下一个资源的地址

③响应体

服务器返回的数据主体,有可能是各种数据类型。

  • HTML页面
  • 图片
  • 视频
  • 以下载形式返回的文件
  • CSS文件
  • JavaScript文件

④响应状态码

HTTP 响应状态码HTTP Status Code),也属于 HTTP 协议的一部分,用来标识响应的状态。响应状态码会随着响应消息一起被发送至客户端浏览器,浏览器根据服务器返回的响应状态码,就能知道这次HTTP 请求的结果是成功还是失败了。

作用:以编码的形式告诉浏览器当前请求处理的结果

HTTP 状态码共分为 5 种类型:

6484ad3f53f448e095d58e5e0d3b06bf.png

完整的 HTTP 响应状态码,可以参考 MDN 官方文档 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status

常见的 HTTP 响应状态码:

  • 成功响应的状态码

    范围的状态码,表示服务器已成功接收到请求并进行处理。常见的 200类型的状态码如下:

    fd5f24b8872e441fb3ec08ef7b5afffc.png

  • 重定向相关的响应状态码

    范围的状态码,表示表示服务器要求客户端重定向,需要客户端进一步的操作以完成资源的请求。常见的 300 类型的状态码如下:

    61dbe85a22944527b48c6ec35fc8edb6.png

  • 客户端错误相关的响应状态码

    范围的状态码,表示客户端的请求有非法内容,从而导致这次请求失败。常见的 400 类型的状态码如下:

    ef315348935f44ffbc765fb10a245d57.png

  • 服务端错误相关的响应状态码

    范围的状态码,表示服务器未能正常处理客户端的请求而出现意外错误。常见的 500类型的状态码如下:

    70c5e30d38fd4ca7b40b97997531c3ac.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值