HTTP首部(请求头,响应头)

HTTP首部的构成

一次HTTP请求或响应的首部包括三个部分,报文首部,空行,以及报文主体。其中报文首部在请求和响应中有所不同,参见下图(图片来自《图解HTTP》一书):


请求首部

响应首部

区别:请求行相比状态行,要多一个URI标识,因为要说明请求的资源;另外还有各自的请求首部字段或响应首部字段。

常用首部字段

请求首部字段
  • Accept系: 定义请求结果的要求,如Accept,Accept-Encoding,Accept-Language,Accept-Charset等。
  • Host: 目标服务器的域和端口号,如Host:www.demo.com
  • Referer: 发起请求的页面URI,即Referer:${window.location.href}
  • User-Agent: 客户端信息,如User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
响应首部字段
  • ETag: 某一个固定的URI资源发生变化时,ETag会更新,如ETag:W/"92d8a6509d07d749ee661d8af47d2fbd"
  • Server: HTTP服务器的应用程序信息,如Server:Apache/2.2.6 (Unix) PHP/5.2.5
  • Location: 引导客户端向某资源发起访问,一般配合状态码3xx使用,重定向请求,如Location:http://www.demo2.com/index.html
  • WWW-Authenticate: 告诉客户端认证方案,一般配合状态码401 Unauthorized使用,如WWW-Authenticate:Basic realm="Usagidesign Auth"
通用首部字段
  • Cache-Control: 对于缓存服务器下达缓存控制的相关指令,具体指令有no-cache, no-store, max-age = ${秒} , public, private等。
  • Connection: 控制代理不再转发的字段,管理持久连接。
    Connection:Upgrade,那么在经过代理后,Upgrade首部字段将不会被发送至服务器。如Connection:Keep-Alive
  • Date: 表示HTTP报文创建时间,如Date:Fri, 19 Oct 2018 09:45:13 GMT
  • Pragma: 兼容HTTP1.1以前的版本,控制缓存,如Pragma:no-cache
  • Transfer-Encoding: 报文传输时的编码方式,HTTP1.1仅对分块传输的编码形式有效,如Transfer-Encoding:chunked
实体首部字段
  • Allow: 资源允许的请求方式,如Allow:GET, HEAD
  • Expires: 资源过期时间,如Expires:Fri, 20 Oct 2018 09:45:13 GMT
  • Last-Modified: 资源最后一次修改的时间,如Last-Modified:Fri, 15 Oct 2018 09:45:13 GMT
    还有一些表示资源具体信息的,如Content-Encoding, Content-Type, Content-Language, Content-Range等。
Cookie相关,未被编入HTTP1.1 RFC2616标准中。

Cookie: 属于请求首部,携带符合条件的Cookie(domain,path,expires)发送至服务器。
Set-Cookie: 属于响应首部,告诉客户端需要保存哪些Cookie值,包括要种Cookie的domain,path,expires。

除了文中所列举的首部字段之外,还有很多其他的首部字段,感兴趣的朋友可以通过其他文章或资料来学习。

注:以上内容均整理自《图解HTTP》,如有侵权请联系我

你可能感兴趣的:(HTTP首部(请求头,响应头))