四、HTTP响应报文格式

一、响应报文格式

HTTP的响应报文的通用格式如下

主要包括状态行、首部行、空行和实体体,和请求报文的结构类似

 

示例

状态行

HTTP/1.1 200 OK\r\n

常见的状态码的类别如下

常用状态码及含义如下

200 OK;HTTP请求成功

404 Not Found;服务器上不存在请求的资源

304 Not Modified;服务器端资源未改变,可直接使用客户端未过期的缓存

 

首部行

Date: Fri, 08 Jan 2021 08:52:35 GMT\r\n
<Date: Fri, 08 Jan 2021 08:52:35 GMT\r\n>

Date字段表明创建HTTP报文的日期和时间

 

Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.13 mod_perl/2.0.11 Perl/v5.16.3\r\n 
<Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/7.4.13 mod_perl/2.0.11 Perl/v5.16.3\r\n>

Server字段告知客户端当前服务器上安装的HTTP服务器应用程序的信息

上述报文的服务器信息是centos+Apache

 

Last-Modified: Fri, 08 Jan 2021 06:59:01 GMT\r\n
<Last-Modified: Fri, 08 Jan 2021 06:59:01 GMT\r\n>

首部字段Last-Modified指明资源最终修改的时间

示意图

ETag: "80-5b85e175214a7"\r\n

字段ETag用来告知客户端实体标识。该标识将资源以字符串形式表示。服务器会为每份资源分配对应的ETag值。另外,当资源更新时,ETag值也需要更新。

Etag通常和If-None-Match一起使用,当浏览器请求服务器的资源A时, 服务器根据A算出ETag返回给浏览器,浏览器把"3f80f-1b6-3e1cb03b" 和 A 同时缓存在本地。当下次再次向服务器请求A时,会通过If-None-Match把ETag发送给服务器,服务器再次计算A的哈希值并和浏览器返回的值做比较。如果发现A发生了变化,就把A返回给浏览器(200)。如果发现A没有变化,就给浏览器返回一个304未修改。这样通过控制浏览器端的缓存,可以节省服务器的带宽,因为服务器不需要每次都把全量数据返回给客户端。

示意图

Accept-Ranges: bytes\r\n

Accept-Ranges用来告知客户端服务器是否能处理范围请求。可指定的字段值有两种,可处理范围请求时指定其为bytes,反之则指定其为none。

示意图

Content-Length: 128\r\n    
[Content length: 128] <Content-Length: 128\r\n>

字段Content-Length表明了实体体部分的大小,单位是字节

 

Content-Type: text/html; charset=UTF-8\r\n 
<Content-Type: text/html; charset=UTF-8\r\n>

字段Content-Type说明了实体主体内对象的媒体类型。和字段Accept一样,字段值用type/subtype形式赋值。

 

参考

《图解HTTP》

《计算机网络自顶向下方法》

 

欢迎大家评论交流,作者水平有限,如有错误,欢迎指出

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值