本文已参与「新人创作礼」活动,一起开启掘金创作之路
1. 什么是 HTTP ?
HTTP:HypeText Transfer Protocal 超文本传输协议
- 它的作用
它是为浏览器和服务器之间的通信而设计 HTML、JS、CSS、图片、字体、音频、视频等等文件,都是通过 HTTP 在服务器和浏览器之间传输
2. HTTP 报文
2.1) 什么是 HTTP 报文
用于 HTTP 协议交互的信息被称为 HTTP 报文,它又分为以下两类
- 请求报文
浏览器向服务器发送的请求信息
- 响应报文
服务器向浏览器发送响应时传输的信息
2.2) HTTP 报文格式
请求报文
看一下图解 HTTP 中给出的请求报文格式:
-
报文首部:请求行 + 首部字段 请求行:包含用于请求的方法 首部字段:包含请求的各种条件和属性的各类首部
-
报文主体:请求体 请求体:只有在发送
POST
请求时才会有,GET
方法没有
响应报文
看一下图解 HTTP 中给出的响应报文格式:
-
报文首部:状态行 + 首部字段 状态行:包含表明响应结果的状态码 首部字段:包含响应的各种条件和属性的各类首部
-
报文主体:响应体 响应体:包含服务器对应于浏览器请求的响应信息
3. 常用的 HTTP 方法
HTTP 方法: 浏览器发送请求时采用的方法(与响应无关)
用来定义对于资源采取什么样的操作,有各自的语义
以下是几个常用的 HTTP 方法:
- GET 方法:获取数据 用来请求 URL 指定的资源,资源经服务器解析后返回响应内容。
- POST 方法:创建数据 用于将实体提交到指定的资源(比如用来注册)
- PUT:更新数据 用来传输文件,用于请求有效载荷替换目标资源的所有当前表示(比如修改个人信息,密码)
- DELETE:删除数据 按请求 URI 删除指定的资源
- HEAD:获取报文首部 用于确认 URI 的有效性及资源更新的日期时间等
接下来,让我们来重点看看GET
和POST
方法
- GET 方法:
通过地址在请求头中携带数据 (因此能携带数据量和地址长度有关,携带的少) GET提交的数据会在地址栏中显示出来
GET 可以被缓存(因为地址被浏览器记住了)
- POST 方法:
既可以通过地址在请求头中携带数据,也可以通过请求体携带数据 (因为可以通过请求体,所以能携带数据量多) POST提交,地址栏不会发生改变
POST 不会被缓存(通过请求体发送)
4. 常用的 HTTP 状态码
HTTP 状态码:定义服务器对请求的处理结果
看一下图解 HTTP 给的状态码的类别:
- 然后,来看看常用的状态码:
200 OK
:从客户端发来的请求在服务器端被正常处理了(即请求成功)
204 No Content
:该状态码代表服务器接收的请求已成功处理,但在返回的响应报文
中不含实体的主体部分(即请求成功,但没有结果返回)
301 Moved Permanently
:永久性重定向。表示请求的资源已被分配了新的 URI,以后应使用资源现在所指的 URI。(今后任何新的请求都应使用新的URI代替)
302 Found
:临时性重定向。该状态码表示请求的资源已被分配了新的 URI,希
望用户(本次)能使用新的 URI 访问。(资源只是临时被移动。客户端应继续使用原有URI)
400 Bad Request
:表示请求报文中存在语法错误
401 Unauthorized
:表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。若之前已进行过 1 次请求,则表示用户认证失败。这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden
:对请求资源的访问被服务器拒绝了
404 Not Found
:服务器上无法找到请求的资源
500 Internal Server Error
:服务器端在执行请求时发生了错误