HTTP协议详解

一、什么是HTTP协议

什么是协议:协议是指双方或多方,相互约定好,大家都需要遵守的规则,叫协议。

所谓HTTP协议,就是指,客户端和服务器之间通信时,发送的数据需要遵守的规则,叫HTTP协议。HTTP 协议中的数据又叫报文。

HTTP:(Hyper Text Transfer Protocol,HTTP)超文本传输协议,一个简单的请求-响应协议。

二、请求的HTTP协议格式(请求报文)

HTTP最大的作用就是确定了请求和响应数据的格式。浏览器发送给服务器端数据:请求报文;服务器返回给浏览器的数据:响应报文。

客户端给服务器发送数据叫请求。

服务器给客户端回传数据叫响应。

请求又分为GET请求和POST请求两种。

请求方式

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

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

  • GET:从服务器端获取数据
  • PSOT:将数据保存到服务器端
  • PUT:命令服务器对数据执行更新
  • DELETE:命令服务器删除数据
  • HEAD
  • CONNECT
  • OPTIONS
  • TRACE

②GET请求

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

③POST请求

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

GET请求

1、请求行

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

GET /javaweb/hello.html HTTP/1.1

  • 请求的方式:GET
  • 请求的资源路径[+?+请求参数](访问地址)
  • 请求的协议的版本号:HTTP/1.1

2、请求头

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

格式: key:value组成,不同的键值对,表示不同的含义

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

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

在这里插入图片描述

POST请求

1、请求行

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

POST /javaweb/add HTTP/1.1

  • 请求的方式:POST
  • 请求的资源路径[+?+请求参数](访问地址)
  • 请求的协议的版本号:HTTP/1.1

2、请求头

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

格式:key:value组成,不同的键值对,表示不同的含义

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

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

空行

3、请求体

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

三种情况:

  • get方式,没有请求体,但是有一个queryString
  • post方式,有请求体,form data
  • json格式,有请求体,Request Payload

格式:

【1】form data

含义:当前请求是一个表单提交的请求参数
在这里插入图片描述
查看源码后,发现格式如下:

username=tom&password=666666

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

【2】Request Payload

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

在这里插入图片描述

在这里插入图片描述

常用请求头的说明

  • Accept:表示客户端可以接收的数据类型
  • Accpet-Languege:表示客户端可以接收的语言类型
  • User-Agent:表示客户端浏览器的信息
  • Host:表示请求时的服务器 ip 和端口号

注:哪些是 GET 请求,哪些是 POST 请求

GET 请求有哪些
   1、form 标签 method=get
   2、a 标签
   3、link 标签引入 css
   4、Script 标签引入 js 文件
   5、img 标签引入图片
   6、iframe 引入 html 页面
   7、在浏览器地址栏中输入地址后敲回车
POST 请求有哪些:
   1、form 标签 method=post

二、响应的HTTP协议格式(响应报文)

在这里插入图片描述

1、响应行

HTTP/1.1 200 OK

  • 响应的协议和版本号
  • 响应状态码
  • 响应状态描述符

2、响应头

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

空格

3、响应体

就是回传给客户端的数据。服务器返回的数据主体,有可能是各种数据类型。

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

在这里插入图片描述

常用的响应码状态码说明

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

状态码含义
200服务器成功处理了当前请求,成功返回响应
302重定向
400[SpringMVC特定环境]请求参数问题
403没有权限
404找不到目标资源(请求地址错误)
405请求方式和服务器端对应的处理方式不一致
406[SpringMVC特定环境]请求扩展名和实际返回的响应体类型不一致
50X服务器端内部错误,通常都是服务器端抛异常了(代码错误)

404产生的具体原因

  • 访问地址写错了,确实是没有这个资源
  • 访问了WEB-INF目录下的资源
  • Web应用启动的时候,控制台已经抛出异常,导致整个Web应用不可用,访问任何资源都是404
  • 服务器端缓存

媒体类型(MIME 类型说明)

MIME 是 HTTP 协议中数据类型。

MIME 的英文全称是"Multipurpose Internet Mail Extensions" 多功能 Internet 邮件扩充服务。

MIME 类型的格式是“大类型/小类型”,并与某一种文件的扩展名相对应。

用途

为了让用户通过浏览器和服务器端交互的过程中有更好、更丰富的体验,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

常见的 MIME 类型

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

9.冄2.7.號

你的鼓励将是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值