您现在的位置是:首页 >技术教程 >Http相关首部网站首页技术教程
Http相关首部
简介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:客服端发送请求时候携带
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。