HTTP 请求报文
HTTP请求报文主要由请求行、请求头部、请求正文这 3 部分组成:
请求行
由 3 部分组成,分别为:请求方法、URL 以及协议版本,之间由空格分隔
请求方法包括 GET、DELETE、PUT、POST、TRACE、OPTIONS、 HEAD 以及扩展方法,当然并不是所有的服务器都实现了所有的方法,部分方法即便支持,处于安全性的考虑也是不可用的。
协议版本的格式为:HTTP/主版本号.次版本号,常用的有 HTTP/1.0 和 HTTP/1.1。
请求头部
请求头部为请求报文添加了一些附加信息,由键值对组成,每行一对,名和值之间使用冒号分隔。
常见请求头如下:
请求头 | 说明 |
---|---|
Host | 接受请求的服务器地址,可以是IP:端口号,也可以是域名 |
User-Agent | 发送请求的应用程序名称 |
Connection | 指定与连接相关的属性,如 Connection:Keep-Alive |
Accept-Charset | 通知服务端可以发送的编码格式 |
Accept-Encoding | 通知服务端可以发送的数据压缩格式 |
Accept-Language | 通知服务端可以发送的语言 |
请求头部的最后会有一个空行,表示请求头部结束,接下来为请求正文,这一行非常重要,必不可少。
请求正文
可选部分,比如 GET 请求就没有请求正文。
HTTP 响应报文
HTTP 响应报文主要由状态行、响应头部、响应正文 3 部分组成。
状态行
由 3 部分组成,分别为:协议版本,状态码,状态码描述,之间由空格分隔。
状态代码为 3 位数字,200~299 的状态码表示成功,300~399 的状态码指资源重定向,400~499 的状态码指客户端请求出错,500~599 的状态码指服务端出错(HTTP/1.1向协议中引入了信息性状态码,范围为100~199)。
状态码 | 英文名称 | 说明 |
---|---|---|
100 | Continue | 继续。客户端应继续其请求 |
200 | OK | 请求成功 |
301 | Moved Permanently | 永久重定向 |
302 | Found | 临时重定向 |
304 | Not Modified | 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。缓存文件并未过期,还可继续使用,无需再次从服务端获取。 |
400 | Bad Request | 客户端请求的语法错误,服务器无法理解。 |
401 | Unauthorized | 请求要求身份认证 |
403 | Forbidden | 服务器理解请求客户端的请求,但是拒绝执行此请求。 |
404 | Not Found | 请求资源不存在,服务器无法根据客户端的请求找到资源(网页)。 |
405 | Method Not Allowed | 客户端请求中的方法被禁止 |
500 | Internal Server Error | 服务器内部错误,无法完成请求。 |
502 | Bad Gateway | 作为网关或者代理的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应。 |
503 | Service Unavailable | 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的 Retry-After 头信息中。 |
504 | Gateway Time-out | 充当网关或代理的服务器未及时从远端服务器获取响应。 |
301 与 302:
301:永久重定向。请求的资源已被永久的移动到新 URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的 URI 代替。搜索引擎将删除源地址,保留重定向地址。
302:资源只是临时被移动。客户端应继续使用原有 URI。重定向地址由响应头中的 Location 属性指定。由于搜索引擎的判定问题,较为复杂的 URL 容易被其它网站使用更为精简的 URL 及 302 重定向劫持。
响应头部
与请求头部类似,为响应报文添加了一些附加信息。
常见响应头部如下:
响应头 | 说明 |
---|---|
Server | 服务器应用程序软件的名称和版本 |
Content-Type | 响应正文的类型 |
Content-Length | 响应正文长度 |
Content-Charset | 响应正文使用的编码 |
Content-Encoding | 响应正文使用的数据压缩格式 |
Content-Language | 响应正文使用的语言 |
参考:
https://blog.youkuaiyun.com/a19881029/article/details/14002273