一、概念
HTTP:是超文本传输协议(Hyper Text Transfer Protocol)。
1.1 HTTP的作用
HTTP最大的作用就是确定了请求和响应数据的格式。浏览器发送给服务器的数据:请求报文;服务器返回给浏览器的数据:响应报文。
1.2 HTTP的组成
HTTP协议由请求和响应两部分构成,请求时由客户端往服务器传输数据,响应是由服务器往客户端传输数据。
二、请求报文
2.1 请求报文的三个部分
请求报文由三部分组成:请求行、请求信息头和请求体。
2.1.1 请求行
作用:展示当前请求的最基本信息,包括如下信息:
- 请求方式
- 访问地址
- HTTP协议的版本
2.1.2 请求信息头
作用:通过具体的参数对本次请求进行详细的说明。
格式:键值对,键和值之间使用冒号隔开。
名称 | 功能 |
---|---|
Host | 服务器的主机地址 |
Accept | 声明当前请求能够接受的媒体类型 |
Referer | 当前请求来源页面的地址 |
Content-Length | 请求体内容的长度 |
Content-Type | 请求体的内容类型,这一项的具体值是媒体类型中的某一种 |
Cookie | 浏览器访问服务器时携带的Cookie数据 |
2.1.3 请求体
作用:作为请求的主体,发送数据给服务器。其实就是POST请求方式下的请求参数。
1.form data
含义:当前请求体是一个表单提交的请求参数。
2. Request Payload
含义:整个请求体以某种特定格式来组织数据,例如JSON格式。
三、请求方式
HTTP1.1中共定义了八种请求方式:
- GET:从服务器端获取数据
- POST:将数据保存到服务器端
- PUT:命令服务器对数据执行更新
- DELETE:命令服务器删除数据
- HEAD
- CONNECT
- OPTIONS
- TRACE
3.1 GET请求和POST请求的对比
GET请求
- 没有请求体
- 请求参数附着在URL地址后面
- 请求参数在浏览器地址栏能够直接被看到,存在安全隐患
- 在URL地址后面携带请求参数,数据容量非常有限。如果数据量大,那么超出容量的数据会丢失
- 从报文角度分析,请求参数是在请求行中携带的,因为访问地址在请求行
POST请求
- 有请求体
- 请求参数放在请求体中
- 请求体发出数据的大小没有限制
- 可以发送各种不同类型的数据
- 从报文角度分析,请求参数是在请求体中携带的
- 由于请求参数是放在请求体中,所以浏览器地址栏看不到
四、响应报文
响应报文包括响应状态行、响应消息头和响应体。
4.1 响应状态行
HTTP/1.1 200 OK
- HTTP协议版本
- 响应状态码
- 响应状态码的说明文字
4.2 响应消息头
响应体的说明书;服务器端对浏览器端设置数据。
常见的响应消息头
名称 | 功能 |
---|---|
Content-Type | 响应体的内容类型 |
Content-Length | 响应体的内容长度 |
Set-Cookie | 服务器返回新的Cookie信息给浏览器 |
location | 在重定向的情况下,告诉浏览器访问下一个资源的地址 |
4.3 响应体
服务器返回的数据主体,有可能是各种数据类型。
- HTML页面
- 图片
- 视频
- 以下载形式返回的文件
- CSS文件
- JavaScript文件
4.4 响应状态码
作用:以编码的形式告诉浏览器当前请求处理的结果。
状态码 | 含义 |
---|---|
200 | 服务器成功处理了当前请求,成功返回响应 |
302 | 重定向 |
400 | 请求参数问题 |
403 | 没有权限 |
404 | 找不到目标资源 |
405 | 请求方式和服务器端对应的处理方式不一致 |
406 | 请求扩展名和实际返回的响应体类型不一致 |
50X | 服务器端内部错误,通常都是服务器端抛异常了 |
4.4.1 404产生的具体原因
- 访问地址写错了,确实是没有这个资源
- 访问了WEB-INF目录下的资源
- Web应用启动的时候,控制台已经抛出异常,导致整个Web应用不可用,访问任何资源都是404
- 服务器端缓存