1.什么是HTTP
什么是HTTP
HyperText Transfer Protocol,超文本 传输 协议,其具体的定义如下:
HTTP是专门在 两点 之间 传输 文字、图片、音频、视频等 超文本数据 的一套 行为约定和规范 。
- [超文本]:不仅局限于普通文本的文本,即为超文本,可以是文字、图片、音频、视频、超链接的混合体,其中最具代表性的就是HTML;
- [传输]:两点之间双向传输数据(服务器 <-> 浏览器、服务器<->服务器);
- [协议]:一套行为约定和规范。
2.HTTP常见的状态码有哪些?
HTTP常见的状态码有哪些
2xx:成功,报文已经收到并被正确处理
- [200 OK] 成功,一切正常,且body中有数据;
- [204 No Content] 成功,一切正常,但body中没有数据;
- [206 Partial Content] 成功,一切正常,但body中的数据仅仅是资源中的一部分(常见于HTTP分块下载或断点传输);
3xx:重定向,资源位置发生变动,需要客户端用新的URL重新发送请求
3xx 类状态码表示客户端请求的资源发生了变动,需要客户端用新的 URL 重新发送请求获取资源,也就是重定向。
- [301 Moved Permanently] 永久重定向,请求的资源已不存在,需要使用新的URL再次访问;
- [302 Found] 临时重定向,请求的资源还在,但暂时需要使用新的URL再次访问;
301和302状态码都会在Response的Header添加Location 字段,以指明该资源的新URL,浏览器会自动进行重定向。
- [304 Not Modified] 缓存重定向,浏览器不会自动跳转,该状态码表示浏览器可以使用缓存中的数据,而无需从服务器中获取。此时的响应中不会带有资源,且浏览器会从本地缓存中获取资源。
4xx:客户端错误,请求报文有误,服务器无法处理
- [400 Bad Request] 客户端请求的报文有误(笼统的错误,具体错在哪无从得知);
- [403 Forbidden] 客户端试图访问被禁止的资源,被服务器拒绝了;
- [404 Not Found] 请求的资源在服务器上不存在或找不到。
5xx:服务器错误,服务器在处理请求时内部发生错误
- [500 Internal Server Error] 服务器内部发生错误(笼统的错误,具体错在哪无从得知);
- [502 Bad Gateway] 在尝试访问后端服务器时发生错误(网关、代理出错),与服务器内部无关;
- [503 Service Unavialable] 服务器正忙,暂时无法响应客户端。
3.HTTP常见的头部字段有哪些?
HTTP 常见字段有哪些
Host:请求方指定域名(一台服务器有多个域名时)
有了 Host 字段,就可以将请求发往「同一台」服务器上的不同网站。
Content-Length:响应方声明响应数据的长度(单位:字节)
服务器在返回数据时,会有 Content-Length 字段,表明本次回应的数据长度,如"Content-Length=1000",说明本次响应的数据长度为1000字节
Connection:设置请求完成后的行为
可选值:Keep-Alive / Close
常用Keep-Alive,表示请求完成后依旧保持连接状态,直到客户端关闭连接,或服务器因长时间无数据传输而关闭连接。
Accept & Content-Type:请求方指定数据格式 & 响应方声明数据格式
- [Accept] 请求方发起请求时,告诉响应方我能够处理的数据格式是什么,当值为
*/* 表示任意格式 - [Content-Type] 响应方响应时,告诉发送方本次返回的数据格式是什么。
Accept-Encoding & Content-Encoding: 请求方指定数据编码(压缩)格式 & 响应方指定数据编码(压缩)格式
- [Accept-Encoding] 请求方发起请求时,告诉响应方我能够处理的数据编码(压缩)格式是什么;
- [Content-Encoding] 响应方响应时,告诉请求方返回数据的编码格式是什么,请求方需要用指定的解码方式解码(解压)。
参考文章
小林coding - HTTP基本概念
|