HTTP报文(常见状态码总结)

HTTP请求报文

请求行(Request Line):只存在于请求报文中,包含了请求方法、URL以及HTTP协议版本信息。
状态行(Status Line):只存在于响应报文中,包含了HTTP协议版本、状态码以及状态码的文本描述信息。
首部字段(Headers):包含了请求或响应的各种属性,例如Accept、Accept-Language、Cache-Control、Content-Type等,用于描述请求或响应的各种信息。
空行(CRLF):HTTP报文头部和报文体之间需要用空行(即CRLF,即回车符和换行符)进行分隔。
报文体(Message Body):只存在于请求和响应的部分中,用于传输请求或响应的数据内容。

请求报文

HTTP(Hypertext Transfer Protocol)请求报文是HTTP协议中客户端向服务器发送请求的消息格式。HTTP请求报文由三部分组成:请求行、消息头和消息体。具体内容如下:
请求行:请求行包括请求方法、请求URI和HTTP协议版本,格式为:请求方法 请求URI HTTP协议版本。请求方法指示客户端希望服务器执行的动作,如GET、POST等;请求URI指定请求的资源路径;HTTP协议版本指示客户端使用的HTTP协议版本。

消息头:消息头包括若干个字段,每个字段由字段名和字段值组成,格式为:字段名:字段值。常见的消息头字段包括:
Accept:指定客户端能够接收的数据类型
Accept-Encoding:指定客户端支持的数据压缩格式
Host:指定请求的服务器域名或IP地址和端口号
User-Agent:指定客户端类型和版本号
Cookie:指定客户端提交的cookie信息
Referer:指定请求来源地址
Content-Type:指定请求消息体的类型

消息体:消息体包含客户端提交的请求数据,格式和内容根据请求方法和Content-Type字段值的不同而不同。GET请求一般没有消息体,POST请求中常见的消息体格式为application/x-www-form-urlencoded或multipart/form-data等。
HTTP请求报文的组成方式为文本形式,可通过各种工具或代码直接构造并发送。
请求报文的示例

GET /example.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive


解释如下:
请求行:使用GET方法请求/example.html资源,使用HTTP/1.1协议版本。
消息头:指定请求的服务器Host为www.example.com,User-Agent为Chrome浏览器,表示客户端能够接收的数据类型为text/html等。
消息体:该GET请求没有消息体。
这个请求报文告诉服务器,客户端希望请求/example.html资源,并且能够接受的数据类型为text/html。服务器根据请求报文的内容返回对应的响应报文。

响应报文

HTTP(Hypertext Transfer Protocol)响应报文是服务器向客户端返回响应的消息格式。HTTP响应报文也由三部分组成:状态行、消息头和消息体。具体内容如下:

状态行:状态行包括HTTP协议版本、状态码和状态码原因短语,格式为:HTTP协议版本 状态码 状态码原因短语。状态码是三位数字,表示服务器对请求的处理结果,常见的状态码有200表示请求成功,404表示请求的资源未找到,500表示服务器内部错误等。

消息头:消息头包括若干个字段,每个字段由字段名和字段值组成,格式为:字段名:字段值。常见的消息头字段包括:

Content-Type:指定响应消息体的类型
Content-Length:指定响应消息体的长度
Set-Cookie:指定服务器返回的cookie信息
Server:指定服务器类型和版本号
Last-Modified:指定响应资源的最后修改时间
消息体:消息体包含服务器返回的响应数据,格式和内容根据Content-Type字段值的不同而不同。常见的消息体格式包括HTML、JSON、XML等。
HTTP响应报文也是文本形式,可通过各种工具或代码解析。以下是一个HTTP响应报文的示例:

HTTP/1.1 200 OK
Date: Sat, 20 Mar 2023 06:18:30 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 1147
Connection: keep-alive
Server: Apache/2.4.51 (Unix)

<!DOCTYPE html>
<html>
<head>
	<title>Example Page</title>
</head>
<body>
	<h1>Hello, World!</h1>
	<p>This is an example page.</p>
</body>
</html>

这个响应报文表示请求成功,响应的资源类型为text/html,响应的消息体长度为1147字节,服务器使用的是Apache/2.4.51版本。消息体是一个HTML页面,包含一个标题和一个段落。

常见状态码

HTTP协议定义了五种类型的状态码,分别是1xx(信息性状态码)、2xx(成功状态码)、3xx(重定向状态码)、4xx(客户端错误状态码)和5xx(服务器错误状态码)。以下是常见的HTTP状态码:
以下是常见的HTTP状态码:

100 Continue:表示服务器已经接收到请求头,并且客户端应继续发送请求主体;
101 Switching Protocols:表示服务器正在切换协议,例如从HTTP/1.1切换到WebSocket;
200 OK:表示请求已经成功,并且服务器返回了响应报文的实体部分;
201 Created:表示请求已经成功,并且在服务器上创建了新资源;
202 Accepted:表示请求已经被服务器接受,但是还没有被处理;
204 No Content:表示请求已经成功,但是响应报文中没有实体的主体部分;
206 Partial Content:表示服务器成功处理了部分GET请求,返回了请求范围内的实体内容;
301 Moved Permanently:表示请求的资源已经被永久移动到了新的URL上;
302 Found:表示请求的资源已经被临时移动到了新的URL上;
303 See Other:表示请求的资源可以在另一个URI上找到,并且客户端应该使用GET方法来获取资源;
304 Not Modified:表示客户端缓存的资源未过期,服务器告诉客户端可以使用缓存的版本;
307 Temporary Redirect:表示请求的资源已经被临时移动到了新的URL上,但是客户端应该继续使用原来的URL;
400 Bad Request:表示请求报文存在语法错误;
401 Unauthorized:表示请求需要身份认证,但是客户端没有提供有效的身份认证信息;
403 Forbidden:表示服务器拒绝了请求;
404 Not Found:表示服务器无法找到请求的资源;
405 Method Not Allowed:表示请求的方法不被服务器支持;
406 Not Acceptable:表示客户端需要的资源的MIME类型和服务器无法提供的MIME类型不匹配;
408 Request Timeout:表示服务器等待客户端发送请求的时间已经超时;
500 Internal Server Error:表示服务器在处理请求时发生了内部错误;
502 Bad Gateway:表示服务器作为网关或代理角色,从上游服务器接收到的响应是无效的;
503 Service Unavailable:表示服务器暂时无法处理请求,可能是由于过载或维护等原因;
504 Gateway Timeout:表示服务器作为网关或代理角色,向上游服务器发起请求时等待响应的时间已经超时。

这些HTTP状态码都是由HTTP协议定义的,客户端和服务器在交互过程中可能会返回其中的某一个状态码,以便描述当前的请求处理状态。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值