We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HTTP请求和响应报文中必定会包含HTTP首部。首部内容为客户端和服务器分别处理请求和响应提供了所需要的信息。
HTTP请求报文 请求报文由方法、URI、HTTP版本、HTTP首部字段等部分构成
HTTP响应报文 在响应中,HTTP报文由HTTP版本、状态码、HTTP首部字段构成
Cookie、Set-Cookie、Content-Disposition
X-Frame-Options、X-XSS-Protection、DNT、P3P
HTTP首部字段将定义成缓存代理和非缓存代理的行为,分成两种类型:
端到端首部(End-to-end Header) 分在此类别中的首部会转发给请求/响应对应的最终接收目标,且必须保存在由缓存生成的响应中,另外规定它必须被转发。
逐跳首部(Hop-by-hop Header) 分在此类别中的首部只对单次转发有效,会因通过缓存或代理而不再转发。
通过指定首部字段Cache-Control的指令,就能操作缓存的工作机制。指令的参数是可选的,多个指令之间通过","分割。
Cache-Control: private, max-age=0, no-cache
public指令
Cache-Control:public
当指定使用public指令时,则明确表明其他用户也可利用缓存。
private指令
Cache-Control:private
当指定使用private指令后,响应只以特定的用户作为对象。
no-cache指令
Cache-Control:no-cache
使用no-cache指令的目的是为了防止从缓存中返回过期的资源。
no-store指令
Cache-Control:no-store
当使用no-store指令时,暗示请求或响应中包含机密信息。因此,该指令规定缓存不能在本地存储请求或响应的任一部分。
s-maxage指令
Cache-Control:s-maxage=608000(单位:秒)
s-maxage指令的功能和max-age指令相同,不同之处在于s-maxage指令只适用与供多位用户使用的公共缓存服务器(代理服务器)。
max-age指令
Cache-Control:max-age=608000(单位:秒)
如果发送的请求中包含max-age指令时,如果判定缓存资源的缓存时间数值比指定时间的数值更小,那么客户端就接收缓存的资源。如果指定值为0,那么缓存服务器通常需要将请求转发给源服务器。
min-fresh指令
Cache-Control:min-fresh=8000(单位:秒)
min-fresh指令要求缓存服务器返回至少还未过指定时间的缓存资源。
max-stale指令
Cache-Control:max-stale=8000(单位:秒)
使用max-stale可指示缓存资源,即使过期也照常接收。
only-if-cached指令
Cache-Control:only-if-cached
使用only-if-cached指令表示客户端仅在缓存服务器本地缓存目标资源的情况下才会要去其返回。若发送请求缓存服务器的本地缓存无响应,则返回状态码_504Gateway Timeout_
must-revalidate指令
Cache-Control:must-revalidate
使用must-revalidate指令,代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效。若代理无法连通源服务器再次获取有效资源的话,缓存必须给客户端一条_504Gateway Timeout_状态码。另外使用了must-revalidate指令会忽略请求的max-stale指令。
proxy-revalidate指令
Cache-Control:proxy-revalidate
proxy-revalidate指令要求所有的缓存服务器在接收到客户端带有该指令的请求返回响应之前,必须再次验证缓存的有效性。
no-stransform指令
Cache-Control:no-stransform
使用no-stransform指令规定无论是在请求还是响应中,缓存都不能改变实体主体的媒体类型。这样做可防止缓存或代理压缩图片等类似操作。
cache-extension token
Cache-Control:private, suix='23'
使用cache-extension标记token,可扩展Cache-Control首部字段内的指令,如果缓存服务器不能理解suix这个指令,就会直接忽略,如果理解对缓存服务器来说是有意义的。
Connection有两个作用
Connection:不再转发的首部字段名
Connection:close
HTTP/1.1之前默认连接都是非持久连接,想再旧版本的HTTP协议上维持持续连接,需要指定Connection字段的值为Keep-Alive
首部字段Date表明创建HTTP报文的日期和时间
Date:Tue, 03 Jul 2015 12:12:12 GMT
Pragma是HTTP/1.1之前版本的历史遗留字段,仅作为与HTTP/1.0向后兼容而定义,该首部字段表示要求所有的中间服务器不返回缓存的资源。
Pragma:no-cache
首部字段Trailer会事先说明在报文主体后记录了那些首部字段,该首部字段可应用在HTTP/1.1版本分块传输编码时
Trailer: Expires Expires: Tue, 28 Sep 2015 23:59:59 GMT
首部字段Transfer-Encoding规定了传输报文主体时采用的编码方式。HTTP/1.1的传输编码方式仅对分块传输编码有效。
Transfer-Encoding: chunked
首部字段Upgrade用于检测HTTP协议及其他协议是否可使用更高的版本进行通信,其参数值可以用来指定一个完全不同的通信协议。
Upgrade: TLS/1.0,HTTP/1.1 Connection:Upgrade
Connection的值被指定为Upgrade,该字段产生作用的Upgrade对象仅限于客户端和邻接服务器之间。使用首部字段Upgrade的时候还需要单独指定Connection的值为Upgrade,对于附有首部字段Upgrade的请求,服务器可用101 Switching Protocols状态码作为相应返回。
首部字段Via是为了追踪客户端与服务器之间的请求和响应报文的传输路径。首部字段Via不仅用于追踪报文的转发,还可避免请求回环的发生,所以必须在经过代理时附加该首部字段内容。
Via: 1.0 www.baidu.com(Squid/3.1)
Warning首部是从HTTP/1.0的相应首部演变过来的,该首部通常会告知用户一些与缓存相关的问题的警告。
Warning: 113 www:baidu.com:8080 "有一个非法访问" Tue,03 Jul 2015 12:12:12 GMT Warning: [警告码][警告的主机:端口]警告内容
Accept首部字段可通知服务器,用户代理能够处理的媒体类型及媒体类型的相对优先级。可用type/subtype这种形式,一次性指定多个媒体类型。若要想给媒体类型设置优先级可使用**q=**来设置,使用(;)号分隔,范围为(0~1),默认权重为q=0.1
Accept: text/html,application/xml;q=0.9
例:
文本文件
text/html,text/plain,text/css
图片文件
image/jpeg,image/gif,image/png
视频文件
video/mpeg,video/mp4
二进制文件
application/octet-stream,application/zip
Accept-Charset 首部字段可用来通知服务器用户代理支持的字符及字符集的相对优先顺序。
Accept-Charset: ios-8859-1,gbk;q=0.8
Accept-Encoding首部字段用来告知服务器用户代理支持的内容编码及内容编码的优先顺序,可一次性指定多个内容编码。
Accept-Encoding: gzip,deflate
首部字段Accept-Language用来告知服务器用户代理能够处理的自然语言集,以自然语言集的相对优先级。
Accept-Language: zh-cn;zh;q=0.7,en-us,en;q=0.3
首部字段Authorization是用来告知服务器,用户代理的认证信息。
Authorization: Basic fcvrgafVGDSEGfsdahsg==
客户端使用首部字段Expect来告知服务器,期望出现的某种特定行为,若服务器无法理解会返回417 Expectation Failed。
Expect: 100-continue
首部字段From用来告知服务器使用用户代理的用户的电子邮件地址。
From: [email protected]
首部字段Host会告知服务器,请求的资源所处的互联网主机名和端口号。在HTTP/1.1的版本中Host字段必须被包含。
Host: www.google.com
形如像if-xxx这种形式的请求首部字段,都可以称为条件请求。服务器接收到附带条件的请求后,只有判断指定条件为真时,才会执行请求。
if-Match: "suix"
首部字段if-Match属附带条件之一,它会告知服务器匹配资源所用的实体标记ETag值
首部字段if-Modified-Since,属附带条件之一,它会告知服务器if-Modified-Since字段值早于资源更新的更新时间,则希望能处理该请求。如果资源没有更新过则返回状态码304 Not Modified的响应。
if-Modified-Since: Thu,15 Apr 2015 00:00:00 GMT
首部字段if-None-Match,属附带条件之一,它与if-Match作用相反,与ETag不一致时,它就告知服务器处理该请求。
if-None-Match: *
首部字段if-Range属于附带条件之一。它告知服务器若指定的if-Range字段值(ETag值或时间)和请求资源的ETage值或时间相一致时,则作为范围请求处理。
if-Range: "123456" Range:bytes=500-1000
首部字段if-Unmodified-Since和首部字段if-Modified-Since的作用相反。它的作用是告知服务器,指定的请求资源只有在字段值内指定的日期时间之后,未发生更新的情况下,才能处理请求。
if-Unmodified-Since: Thu,03 Jul 2015 00:00:00 GMT
通过TRACE方法或OPTIONS方法,发送包含首部字段Max-Forwards的请求时,该字段以十进制整数形式指定可经过的服务器最大数目
Max-Forwards: 10
客户端发送包含首部字段Proxy-Authorization的请求时,以告知服务器认证所需要的信息。
Proxy-Authorization: Basic dGfdaDfgjoiuoireCCD
对于只需要获取部分资源的范围请求,包含首部字段Range即可告知服务器资源的指定范围。
Range: bytes=5001-1000
首部字段Referer会告知服务器请求的原始资源的URI
Referer: http://www.google.com/index.html
首部字段TE会告知服务器客户端能够处理响应的传输编码方式及相对优先级。
TE: gzip,deflate;q=0.5
首部字段User-Agent会将创建请求的浏览器和用户代理名称等信息传达给服务器
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4
首部字段Accept-Ranges是用来告知客户端服务器是否能处理范围请求,以指定获取服务器某个部分的资源。可处理返回范围请求时指定其为bytes,反之则指定其为none
Accept-Ranges: bytes
首部字段Age能告知客户端,源服务器在多久前创建了响应,单位为毫秒
Age: 600
首部字段ETag能告知客户端实体标识。它是一种可将资源以字符串形式做唯一性标识的方式。
ETag: usagi-abcd
强ETge值,不论实体发生多么细微的变化都会改变其值。
ETag: "usagi-1234"
只有资源发生了根本改变才会改变ETag值
ETag: W/"usagi-1234"
使用首部字段Location可以将响应接收方引导至某个与请求URI位置不同的资源。该字段会配合3xx:Redirection的响应。
Location: http://www.google.com/index.html
该首部字段Proxy-Authenticate会把由代理服务器所要求的认证信息发送给客户端。
Proxy-Authenticate: Basic realm="Usagidesign Auth"
首部字段Retry-After告知客户端应该在多久之后再次发送请求。主要配合503 Service Unavailable响应或3xx Redirect响应
Retry-After: 120
首部字段Server告知客户端当前服务器上安装的HTTP服务器应用程序的信息。
Server: Apache/2.2.17 (Unix) PHP/5.2.5
首部字段Vary可对缓存进行控制。如果代理服务器接收到带有Vary首部字段指定获取资源的请求时,如果使用的Accept-Language字段的值相同,那么就直接从缓存返回响应。
Vary: Accept-Language
首部字段WWW-Authenticate用于HTTP访问认证。它会告知客户端适用于访问请求URI所指定的认证方案(Basic或Digest)和带参数提示的质询。状态码401 Unauthorized响应中,肯定带有首部字段WWW-Authenticate。
WWW-Authenticate: Basic realm="Usagidesign Auth"
首部字段Allow用于通知客户端能够支持Request-URI指定资源的所有HTTP方法。当服务器接收到不支持的HTTP方法的时候,会以状态码405 Method Not Allowed作为响应返回,同时会返回能支持的方法写入首部字段Allow后返回。
Allow: GET, HEAD
首部字段Content-Encoding会告知客户端服务器对实体的主体部分选用的内容编码方式。
Content-Encoding: gzip
首部字段Content-Language会告知客户端,实体主体使用的自然语言
Content-Language: zh-CN
首部字段Content-Length表明了实体主体部分的大小(单位字节)。
Content-Length: 1500
首部字段Content-Location给出与报文主体部分相对应的URI。与Location不同,Content-Location表示的是报文主体返回资源对应的URI。
Content-Location: http://www.google.com/index.html
首部字段Content-MD5是一串由MD5算法生成的值,其目的在于检查报文主体在传输过程中是否保持完整,以及确认传输到达。
Content-MD5: OGIEJIMKVNKNLNIWPJJPQNJKNXSJKANXZ==
首部字段Content-Range用于范围请求,服务器返回响应时使用首部字段Content-Range,能告知客户端作为响应返回的实体的那个部分符合范围请求。
Content-Range: bytes 5001 - 100000/100000
首部字段Content-Type说明了实体主体内对象的媒体类型。
Content-Type: text/html; charset=UTF-8
首部字段Expires会将资源失效的日期告知客户端
Expires: Wed, 04 Jul 2016 08:26:05 GMT
首部字段Last-Modified指明资源最终修改的时间。
Last-Modified: Wed, 23 May 2016 09:09:09 GMT
服务端设置cookie信息到客户端
Set-Cookie:status=enable; expires=Sun, 03-Jan-16 21:52:35 GMT; domain=www.baidu.com; path=/
expires属性 Cookie的expires属性指定浏览器可发送Cookie的有效期。当省略的时候,其有效期仅限于维持浏览器会话时间段内。
path属性 Cookie的path属性可用于限制指定的Cookie的发送范围的文件目录。
domain属性 通过Cookie的domain属性指定的域名可做到与结尾匹配一致。
secure属性 Cookie的secure属性用于限制web页面仅在HTTPS安全连接时,才可以发送Cookie。
HttpOnly属性 Cookie的HttpOnly属性是Cookie的扩展功能,它使JS无法获得Cookie。其主要目的为防止跨站脚本攻击。
首部字段X-Frame-Options属于HTTP响应首部,用于控制网站内容在其他web网站的Frame标签内的显示问题。主要目的是为了防止点击劫持攻击。
X-Frame-Options: DENY
有两个取值:DENY表示拒绝,SAMEORIGIN表示仅在同源域名下的页面匹配时许可。
首部字段X-XSS-Protection属于HTTP响应首部,它是针对跨站脚本攻击(XSS)的一种对策,用于控制浏览器XSS防护机制的开关。有两个取值:0表示无效,1表示有效。
X-XSS-Protection: 1
X-Forwarded-For 是一个扩展头。它最开始是由Squid这个缓存代理软件引入,用来表示HTTP请求端真实IP,现在已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用。
X-Forwarded-For: client, proxy1, proxy2
扩展头X-Powered-By这个不是Apache或者Nginx输出的,而是由语言解析器或者应用程序框架输出的。这个值的意义用于告知网站是用何种语言或框架编写的。
X-Powered-By:Express
首部字段DNT属于HTTP请求首部,其中DNT是Do Not Track的简称,意为拒绝个人信息被收集,是表示拒绝被精准广告跟踪的一种方法。有两个取值:0同意被追踪,1拒绝被追踪。
DNT: 1
首部字段P3P属于HTTP响应首部,通过利用P3P技术,可以让web网站上的个人隐私变成一种仅供程序可以理解的形式,以达到保护用户隐私的目的。
P3P: CP=/"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR/"
首部字段Strict-Transport-Security简称为HSTS,它允许一个HTTPS网站,要求浏览器总是通过HTTPS来访问它。
strict-transport-security: max-age=16070400; includeSubDomains
includeSubDomains是可选的,用来指定是否作用于子域名。支持HSTS的浏览器遇到这个响应头,会把当前网站加入HSTS列表,然后在max-age指定的秒数内,当前网站所有请求都会被重定向为https。即使用户主动输入http://或者不输入协议部分,都将重定向到https://地址。
互联网上的资源有各种类型,通常浏览器会根据响应头的Content-Type字段来分辨它们的类型。例如:"text/html"代表html文档,"image/png"是PNG图片,"text/css"是CSS样式文档。然而,有些资源的Content-Type是错的或者未定义。这时,某些浏览器会启用MIME-sniffing来猜测该资源的类型,解析内容并执行。
X-Content-Type-Options: nosniff
这个规范与内容安全有关,主要是用来定义页面可以加载哪些资源,减少XSS的发生。
Content-Security-Policy: default-src 'self'
The text was updated successfully, but these errors were encountered:
No branches or pull requests
HTTP请求和响应报文中必定会包含HTTP首部。首部内容为客户端和服务器分别处理请求和响应提供了所需要的信息。
HTTP请求报文
请求报文由方法、URI、HTTP版本、HTTP首部字段等部分构成
HTTP响应报文
在响应中,HTTP报文由HTTP版本、状态码、HTTP首部字段构成
4种HTTP首部字段类型
HTTP/1.1 首部字段一览表
通用首部字段
请求首部字段
响应首部字段
实体首部字段
非HTTP/1.1首部字段
Cookie、Set-Cookie、Content-Disposition
其他首部字段(非标准)
X-Frame-Options、X-XSS-Protection、DNT、P3P
End-to-end、Hop-by-hop
HTTP首部字段将定义成缓存代理和非缓存代理的行为,分成两种类型:
端到端首部(End-to-end Header)
分在此类别中的首部会转发给请求/响应对应的最终接收目标,且必须保存在由缓存生成的响应中,另外规定它必须被转发。
逐跳首部(Hop-by-hop Header)
分在此类别中的首部只对单次转发有效,会因通过缓存或代理而不再转发。
HTTP/1.1通用首部字段详解
Cache-Control
通过指定首部字段Cache-Control的指令,就能操作缓存的工作机制。指令的参数是可选的,多个指令之间通过","分割。
缓存指令一览
缓存响应指令
表示是否能缓存的指令
public指令
当指定使用public指令时,则明确表明其他用户也可利用缓存。
private指令
当指定使用private指令后,响应只以特定的用户作为对象。
no-cache指令
使用no-cache指令的目的是为了防止从缓存中返回过期的资源。
控制可执行缓存对象的指令
no-store指令
当使用no-store指令时,暗示请求或响应中包含机密信息。因此,该指令规定缓存不能在本地存储请求或响应的任一部分。
指定缓存期限和认证的指令
s-maxage指令
s-maxage指令的功能和max-age指令相同,不同之处在于s-maxage指令只适用与供多位用户使用的公共缓存服务器(代理服务器)。
max-age指令
如果发送的请求中包含max-age指令时,如果判定缓存资源的缓存时间数值比指定时间的数值更小,那么客户端就接收缓存的资源。如果指定值为0,那么缓存服务器通常需要将请求转发给源服务器。
min-fresh指令
min-fresh指令要求缓存服务器返回至少还未过指定时间的缓存资源。
max-stale指令
使用max-stale可指示缓存资源,即使过期也照常接收。
only-if-cached指令
使用only-if-cached指令表示客户端仅在缓存服务器本地缓存目标资源的情况下才会要去其返回。若发送请求缓存服务器的本地缓存无响应,则返回状态码_504Gateway Timeout_
must-revalidate指令
使用must-revalidate指令,代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效。若代理无法连通源服务器再次获取有效资源的话,缓存必须给客户端一条_504Gateway Timeout_状态码。另外使用了must-revalidate指令会忽略请求的max-stale指令。
proxy-revalidate指令
proxy-revalidate指令要求所有的缓存服务器在接收到客户端带有该指令的请求返回响应之前,必须再次验证缓存的有效性。
no-stransform指令
使用no-stransform指令规定无论是在请求还是响应中,缓存都不能改变实体主体的媒体类型。这样做可防止缓存或代理压缩图片等类似操作。
Cache-Control扩展
cache-extension token
使用cache-extension标记token,可扩展Cache-Control首部字段内的指令,如果缓存服务器不能理解suix这个指令,就会直接忽略,如果理解对缓存服务器来说是有意义的。
Connection
Connection有两个作用
HTTP/1.1之前默认连接都是非持久连接,想再旧版本的HTTP协议上维持持续连接,需要指定Connection字段的值为Keep-Alive
Date
首部字段Date表明创建HTTP报文的日期和时间
Pragma
Pragma是HTTP/1.1之前版本的历史遗留字段,仅作为与HTTP/1.0向后兼容而定义,该首部字段表示要求所有的中间服务器不返回缓存的资源。
Trailer
首部字段Trailer会事先说明在报文主体后记录了那些首部字段,该首部字段可应用在HTTP/1.1版本分块传输编码时
Transfer-Encoding
首部字段Transfer-Encoding规定了传输报文主体时采用的编码方式。HTTP/1.1的传输编码方式仅对分块传输编码有效。
Upgrade
首部字段Upgrade用于检测HTTP协议及其他协议是否可使用更高的版本进行通信,其参数值可以用来指定一个完全不同的通信协议。
Connection的值被指定为Upgrade,该字段产生作用的Upgrade对象仅限于客户端和邻接服务器之间。使用首部字段Upgrade的时候还需要单独指定Connection的值为Upgrade,对于附有首部字段Upgrade的请求,服务器可用101 Switching Protocols状态码作为相应返回。
Via
首部字段Via是为了追踪客户端与服务器之间的请求和响应报文的传输路径。首部字段Via不仅用于追踪报文的转发,还可避免请求回环的发生,所以必须在经过代理时附加该首部字段内容。
Warning
Warning首部是从HTTP/1.0的相应首部演变过来的,该首部通常会告知用户一些与缓存相关的问题的警告。
HTTP/1.1警告码
Accept
Accept首部字段可通知服务器,用户代理能够处理的媒体类型及媒体类型的相对优先级。可用type/subtype这种形式,一次性指定多个媒体类型。若要想给媒体类型设置优先级可使用**q=**来设置,使用(;)号分隔,范围为(0~1),默认权重为q=0.1
例:
文本文件
图片文件
视频文件
二进制文件
Accept-Charset
Accept-Charset 首部字段可用来通知服务器用户代理支持的字符及字符集的相对优先顺序。
Accept-Encoding
Accept-Encoding首部字段用来告知服务器用户代理支持的内容编码及内容编码的优先顺序,可一次性指定多个内容编码。
例:
Accept-Language
首部字段Accept-Language用来告知服务器用户代理能够处理的自然语言集,以自然语言集的相对优先级。
Authorization
首部字段Authorization是用来告知服务器,用户代理的认证信息。
Expect
客户端使用首部字段Expect来告知服务器,期望出现的某种特定行为,若服务器无法理解会返回417 Expectation Failed。
From
首部字段From用来告知服务器使用用户代理的用户的电子邮件地址。
Host
首部字段Host会告知服务器,请求的资源所处的互联网主机名和端口号。在HTTP/1.1的版本中Host字段必须被包含。
if-Match
形如像if-xxx这种形式的请求首部字段,都可以称为条件请求。服务器接收到附带条件的请求后,只有判断指定条件为真时,才会执行请求。
首部字段if-Match属附带条件之一,它会告知服务器匹配资源所用的实体标记ETag值
if-Modified-Since
首部字段if-Modified-Since,属附带条件之一,它会告知服务器if-Modified-Since字段值早于资源更新的更新时间,则希望能处理该请求。如果资源没有更新过则返回状态码304 Not Modified的响应。
if-None-Match
首部字段if-None-Match,属附带条件之一,它与if-Match作用相反,与ETag不一致时,它就告知服务器处理该请求。
if-Range
首部字段if-Range属于附带条件之一。它告知服务器若指定的if-Range字段值(ETag值或时间)和请求资源的ETage值或时间相一致时,则作为范围请求处理。
if-Unmodified-Since
首部字段if-Unmodified-Since和首部字段if-Modified-Since的作用相反。它的作用是告知服务器,指定的请求资源只有在字段值内指定的日期时间之后,未发生更新的情况下,才能处理请求。
Max-Forwards
通过TRACE方法或OPTIONS方法,发送包含首部字段Max-Forwards的请求时,该字段以十进制整数形式指定可经过的服务器最大数目
Proxy-Authorization
客户端发送包含首部字段Proxy-Authorization的请求时,以告知服务器认证所需要的信息。
Range
对于只需要获取部分资源的范围请求,包含首部字段Range即可告知服务器资源的指定范围。
Referer
首部字段Referer会告知服务器请求的原始资源的URI
TE
首部字段TE会告知服务器客户端能够处理响应的传输编码方式及相对优先级。
User-Agent
首部字段User-Agent会将创建请求的浏览器和用户代理名称等信息传达给服务器
Accept-Ranges
首部字段Accept-Ranges是用来告知客户端服务器是否能处理范围请求,以指定获取服务器某个部分的资源。可处理返回范围请求时指定其为bytes,反之则指定其为none
Age
首部字段Age能告知客户端,源服务器在多久前创建了响应,单位为毫秒
ETag
首部字段ETag能告知客户端实体标识。它是一种可将资源以字符串形式做唯一性标识的方式。
强ETag值
强ETge值,不论实体发生多么细微的变化都会改变其值。
弱ETag值
只有资源发生了根本改变才会改变ETag值
Location
使用首部字段Location可以将响应接收方引导至某个与请求URI位置不同的资源。该字段会配合3xx:Redirection的响应。
Proxy-Authenticate
该首部字段Proxy-Authenticate会把由代理服务器所要求的认证信息发送给客户端。
Retry-After
首部字段Retry-After告知客户端应该在多久之后再次发送请求。主要配合503 Service Unavailable响应或3xx Redirect响应
Server
首部字段Server告知客户端当前服务器上安装的HTTP服务器应用程序的信息。
Vary
首部字段Vary可对缓存进行控制。如果代理服务器接收到带有Vary首部字段指定获取资源的请求时,如果使用的Accept-Language字段的值相同,那么就直接从缓存返回响应。
WWW-Authenticate
首部字段WWW-Authenticate用于HTTP访问认证。它会告知客户端适用于访问请求URI所指定的认证方案(Basic或Digest)和带参数提示的质询。状态码401 Unauthorized响应中,肯定带有首部字段WWW-Authenticate。
Allow
首部字段Allow用于通知客户端能够支持Request-URI指定资源的所有HTTP方法。当服务器接收到不支持的HTTP方法的时候,会以状态码405 Method Not Allowed作为响应返回,同时会返回能支持的方法写入首部字段Allow后返回。
Content-Encoding
首部字段Content-Encoding会告知客户端服务器对实体的主体部分选用的内容编码方式。
Content-Language
首部字段Content-Language会告知客户端,实体主体使用的自然语言
Content-Length
首部字段Content-Length表明了实体主体部分的大小(单位字节)。
Content-Location
首部字段Content-Location给出与报文主体部分相对应的URI。与Location不同,Content-Location表示的是报文主体返回资源对应的URI。
Content-MD5
首部字段Content-MD5是一串由MD5算法生成的值,其目的在于检查报文主体在传输过程中是否保持完整,以及确认传输到达。
Content-Range
首部字段Content-Range用于范围请求,服务器返回响应时使用首部字段Content-Range,能告知客户端作为响应返回的实体的那个部分符合范围请求。
Content-Type
首部字段Content-Type说明了实体主体内对象的媒体类型。
Expires
首部字段Expires会将资源失效的日期告知客户端
Last-Modified
首部字段Last-Modified指明资源最终修改的时间。
Set-Cookie
服务端设置cookie信息到客户端
expires属性
Cookie的expires属性指定浏览器可发送Cookie的有效期。当省略的时候,其有效期仅限于维持浏览器会话时间段内。
path属性
Cookie的path属性可用于限制指定的Cookie的发送范围的文件目录。
domain属性
通过Cookie的domain属性指定的域名可做到与结尾匹配一致。
secure属性
Cookie的secure属性用于限制web页面仅在HTTPS安全连接时,才可以发送Cookie。
HttpOnly属性
Cookie的HttpOnly属性是Cookie的扩展功能,它使JS无法获得Cookie。其主要目的为防止跨站脚本攻击。
X-Frame-Options
首部字段X-Frame-Options属于HTTP响应首部,用于控制网站内容在其他web网站的Frame标签内的显示问题。主要目的是为了防止点击劫持攻击。
有两个取值:DENY表示拒绝,SAMEORIGIN表示仅在同源域名下的页面匹配时许可。
X-XSS-Protection
首部字段X-XSS-Protection属于HTTP响应首部,它是针对跨站脚本攻击(XSS)的一种对策,用于控制浏览器XSS防护机制的开关。有两个取值:0表示无效,1表示有效。
X-Forwarded-For
X-Forwarded-For 是一个扩展头。它最开始是由Squid这个缓存代理软件引入,用来表示HTTP请求端真实IP,现在已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用。
X-Powered-By
扩展头X-Powered-By这个不是Apache或者Nginx输出的,而是由语言解析器或者应用程序框架输出的。这个值的意义用于告知网站是用何种语言或框架编写的。
DNT
首部字段DNT属于HTTP请求首部,其中DNT是Do Not Track的简称,意为拒绝个人信息被收集,是表示拒绝被精准广告跟踪的一种方法。有两个取值:0同意被追踪,1拒绝被追踪。
P3P
首部字段P3P属于HTTP响应首部,通过利用P3P技术,可以让web网站上的个人隐私变成一种仅供程序可以理解的形式,以达到保护用户隐私的目的。
Strict-Transport-Security
首部字段Strict-Transport-Security简称为HSTS,它允许一个HTTPS网站,要求浏览器总是通过HTTPS来访问它。
includeSubDomains是可选的,用来指定是否作用于子域名。支持HSTS的浏览器遇到这个响应头,会把当前网站加入HSTS列表,然后在max-age指定的秒数内,当前网站所有请求都会被重定向为https。即使用户主动输入http://或者不输入协议部分,都将重定向到https://地址。
X-Content-Type-Options
互联网上的资源有各种类型,通常浏览器会根据响应头的Content-Type字段来分辨它们的类型。例如:"text/html"代表html文档,"image/png"是PNG图片,"text/css"是CSS样式文档。然而,有些资源的Content-Type是错的或者未定义。这时,某些浏览器会启用MIME-sniffing来猜测该资源的类型,解析内容并执行。
Content-Security-Policy
这个规范与内容安全有关,主要是用来定义页面可以加载哪些资源,减少XSS的发生。
The text was updated successfully, but these errors were encountered: