HTTP协议

oneNeko 于 2021-05-10 发布

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
HTTP三点注意事项:

HTTP请求

每个HTTP请求和响应都遵循相同的格式,包含请求行/状态行、消息头(Header)和消息体(Body),其中消息体是可选的。

消息头包含若干属性,但要保证一行只有一个属性,并且必须以\r\n(回车换行)结尾。 当遇到空行时,后面的数据全属于消息体。 客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下面给出了请求报文的一般格式。

------------------------------------------

请求版本 URL 协议版本 CRLF   #请求行
头部字段名:值 CRLF           #请求头部
···
头部字段名:值 CRLF           #请求头部
CRLF                        #空行
请求正文                     #请求数据

------------------------------------------

示例(访问百度首页):
GET / HTTP/1.1
Host: baidu.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
DNT: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36 Edg/90.0.818.56
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

常用请求方法

请求方法 描述
GET 申请获取资源
HEAD 类似于GET请求,不过仅要求服务器返回的头部信息,不传递实际内容
POST 向指定资源提交数据进行处理请求
PUT 上传某个资源
DELETE 删除某个资源
CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS 允许客户端查看服务器的性能。
TRACE 回显服务器收到的请求,主要用于测试或诊断。
PATCH 是对 PUT 方法的补充,用来对已知资源进行局部更新 。

请求头常用属性

属性 描述
Accept 客户端可以接受的MIME类型
Accept-Encoding 客户端可以接受的数据压缩格式
Accept-Charset 客户端可以接受的字符集编码
Accept-Language 客户端可以接受的语言
User-Agent 客户端的一些基本信息,如使用的操作系统和浏览器的名称和版本等
Content-Type 表示请求中的媒体类型信息
Content-Length 表示请求消息体的长度
Connection 指定是否继续保持连接
Host 指定要访问的虚拟主机名和端口号
Cookie 将cookie值发送给服务器
If-Modified-Since 缓存资源的最后获取时间

HTTP响应

服务器响应消息 HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

状态行如HTTP/1.1 200 OK: 其中,HTTP/1.1表示协议版本;200表示状态码;OK是状态说明。

常用状态码

状态码 状态说明 描述
200 OK 响应请求正常
204 No Content 服务器收到的请求已经处理完毕,但不需要返回响应体
206 Partial Content 该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求。
301 Movied Permanently 永久性重定向
302 Found 临时性重定向。
303 See Other 该状态码表示由于请求对应的资源存在另一个URI,应使用GET方法定向获取请求的资源。
304 Not Modified 该状态码表示客户端发送附带条件请求时,服务器端允许请求访问资源,但未满足条件的情况。
307 Temporary Redirect 临时重定向。307状态码并不会指定客户端要用什么样的请求方法请求重定向地址。
400 Bad Request 表示该请求报文中存在语法错误,导致服务器无法理解该请求。客户端需要修改请求的内容后再次发送请求。
401 Unauthorized 该状态码表示发送的请求需要有通过HTTP认证(Basic认证,Digest认证)的认证信息。
403 Forbidden 该状态码表明对请求资源的访问被服务器拒绝了。
404 Not Found 该状态码表明服务器上无法找到指定的资源。通常被用于服务器不想透露拒绝请求的原因,或者没有其他的响应可提供。
500 Internal Server Error 该状态码表明服务器端在执行请求时发生了错误。也有可能是Web应用存在的BUG或某些临时的故障。
503 Service Unavailable 该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

响应头常用属性

属性 描述
Location 实现请求重定向
Server 服务器的基本信息
Content-Encoding 服务器发送数据时使用的压缩格式
Content-Language 发送的数据所用的语言
Content-Type 所发送的数据的类型
Content-Length 发送数据的大小
Set-Cookie 把cookie发送到客户端
Last-Modified 指示资源的最后修改日期和时间

参考

https://www.cnblogs.com/testyao/p/6548261.html https://www.cnblogs.com/chaojiyingxiong/p/9766681.html