您现在的位置是:首页 >技术教程 >Http相关首部网站首页技术教程

Http相关首部

鲨鱼小猫 2023-07-11 09:13:13
简介Http相关首部

HTTP首部

1 报文首部

  • 报文结构:报文首部+空行+报文主体
  • 请求报文首部:请求行(请求方法、Http版本、URI)、首部字段(请求字段、通用字段、实体字段)
  • 响应报文首部:状态行(Http版本、状态码)、首部字段(响应字段、通用字段、实体字段)

2 首部字段概述

  • 通用字段:通信双方都会使用的字段
  • 实体字段:补充了资源更新时间,实体的相关信息
  • 请求字段:请求时候附加的额外信息
  • 响应字段:响应时候附加的额外信息

3 通用首部字段

  • Cache-Control
    • public:表明其他的用户也可以利用缓存
    • private:服务器端使用,表明只有特定的用户可以利用缓存,其他用户发起请求时候,代理服务器不会响应
    • no-cache:客户端端使用时候,表示告诉代理服务器,请从源服务器获取数据,而不要发送缓存。服务器端使用时候,表示浏览器在使用缓存的资源之前,必须先与服务器确认返回的响应是否被更改(对于双方来说就是不缓存过期资源)
    • no-store:表示不能缓存请求或者响应的内容
    • max-age:服务端使用,告诉客户端在规定的时间内,先找自己的缓存使用,如果超过了,请重新在服务器端查找。客户端使用,表示自己不愿意接受响应时间大于设定的值
    • min-fresh:客户端使用,表示收到的缓存不能在这个时间内过期
    • max-stale:客户端使用,表示过期了一段时间,我也接收
    • only-if-cached:客户端使用,仅仅返回已经缓存的资源, 不访问网络, 若无缓存则返回504
    • must-revalidate:代理服务器会再次向源服务器进行资源确认,确认自己返回的缓存还没有过期。带有 must-revalidate 的缓存,在任何情况下,都必须成功 revalidate 后才能使用。
    • proxy-revalid:要求所有的缓存服务器在响应请求的之前,必须再次验证缓存的有效性
    • no-transform:在传输中,缓存都不能改变实体主体的类型,可以防止代理或者缓存压缩图片等操作。

  • Connection
    • 用途1、客户端发送请求到代理服务器,在请求中字段有Connection:Upgrade。表示代理服务器收到请求后,进行转发时候,去掉请求中的Upgrade
    • 用途2、管理连接,在旧版本http中,默认连接是非持久化的,客户端需在请求中写Connection:Keep-Alive。新版本的不用写,默认持久化连接。不管新旧版本,若想断开则写Connection:close

  • Date
    • 代表http报文创建的时间

  • Pragma
    • 经常用于发送命令的首部,表示不接受缓存。但是适用于旧版本,现在通常为了兼容版本,为了表达不接受缓存,常常同时写如下两条语句:Pragma:no-cache、Cache-Control:no-cache

  • Traile
    • 相当于是预申明报文主体之后的字段

  • Transfer-Encoding
    • 表明传输报文主体时候采用的编码方式

  • Upgrade
    • 客服端发送用于询问是否采用新的协议。服务端发送用于表明同意采用某种协议发送。注意这个字段常常与Connection:Upgrade一起使用。

  • Via
    • 记录通过的传输路线

  • Warning
    • 大部分是和缓存相关的警告码
    • 110 代理返回的响应已经过期
    • 111 代理再验证是否有效时失败
    • 112 代理与互联网的连接被切断

4 请求首部字段

  • Accept
    • 用于告知服务器,用户能够处理的媒体类型,以及响应的优先级,优先级使用q,默认是1。数字取值范围是0~1,数字越大,优先级越高

  • Accept-Charset
    • 用于告知服务器,用户所需要的字符集,存在多个字符集时候,同样设有优先级,使用与Accept字段一致

  • Accept-Encoding
    • 用于指定文件压缩的类型,优先级使用与Accept字段一致

  • Accept-Language
    • 用于指定语言,优先级使用与Accept字段一致

  • Authorization
    • 用来告知服务器,网站证书信息

  • Form
    • 用来告知服务器,使用用户代理的用户的电子邮件信息

  • Host
    • 当一台服务器上存在多个虚拟主机时候,使用Host,告知寻找的主机名和端口号。

  • If-xxx
    • If-Match:服务器会比对该字段与资源的ETag值,当两者的值一样时候,才会执行请求
    • If-Modified-Since:如果在指定的时间后,资源发生了更新,则会返回,否则返回304状态码
    • If-Unmodified-Since:如果在指定的时间后,资源没有发生了更新,则会返回,否则返回412状态码
    • If-None-Match:与If-Match恰恰相反
    • If-Range,Range。当If-Range与ETag值一致时候,按照Range字段指定的范围,返回对应部分数据。当不一致,直接返回全部的数据

  • Max-Forwards:用来表示可以转发的次数

  • Proxy-Authorization:用于验证客户端和代理之间的认证行为

  • Referer:用于表明是哪个字段发起的请求

  • TE:用于传输编码,与Accept-Encoding很相似,但是这个是限制在两个节点中的传输,Accept-Encoding是全局范围

  • User-Agent:包含浏览器和代理相关信息

5 响应首部字段

  • Accept-Range:当值为bite时候,表明可以处理范围请求,否则返回none表示没有办法处理

  • Age:表示源服务器在多久之间创建了响应

  • ETag:实体标识,当资源改变时候,url没有变,其ETag还是会变得

  • Location:表示请到新的地址去请求资源

  • Retry-After:告诉客户端多久之后再次发送请求

  • Sever:告诉客户端当前服务器端的Http应用程序的相关信息

  • Vary:决定了对于未来的一个请求头,应该用一个缓存的回复,还是向源服务器请求一个新的回复

6 实体首部字段

  • Allow:服务器端响应客户端,表示支持的方法

  • Content-Encoding:服务器端响应客户端,表示我已经用这种方法压缩,你使用对应方法进行解压

  • Content-Language:服务器端响应客户端,表示该资源是什么自然语言类型

  • Content-Length:服务器端响应客户端,表示该资源大小

  • Content-Location:服务器端响应客户端,表示该资源对应的url

  • Content-MD5:服务器端响应客户端,返回一个Content-MD5值,客户端收到资源后,会进行相同的MD5算法计算一个值,与Content-MD5进行比对,判断报文主体的准确性

  • Content-Type:说明了实体主体的媒体类型

  • Content-Range:响应范围请求,说明了返回的数据是那些范围

  • Expires:告诉客户端资源什么时候失效

  • Last-Modified:告诉客户端资源最后一次更改过的时间

7 cookie相关首部字段

  • Set-Cookie:服务端先告诉客户端我给你发布的cookie信息。参数为:
    • NAME:cookie的名字和值
    • expires:指定了这个cookie的有效期
    • path:指定服务器那些文件目录是cookie的适用对象
    • domian:指定服务器端,cookie适用的域名
    • HttpOnly:限制cookie无法被js脚本访问
    • Secure:使用https时候才使用cookie

  • Cookie:客服端发送请求时候携带
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。