先从发送端开始吧。
GET HTTP/1.1 如果使用代理服务器的话格式为 GET http://XXX HTTP/1.1
Host 头域指定 请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码 返回。
Upgrade-Insecure-Requests: 1 告诉服务器,浏览器可以处理https协议,然后服务器返回Content-Security-Policy: upgrade-insecure-requests头,或者通过meta头设置,告诉浏览器,对于页面的http资源,请求时可以自动升级到https,比如在https的网站上有一张图片url是http://localhost/1.jpg,浏览器请求时会把url变成https://localhost/1.jpg,所以这里首先需要服务器在端有相对应的资源。但是有一种情况例外,那就是https网站中a标签对应的外站资源不会被升级,比如a网站有一张b网站的链接,那么这个链接对应的url不会升级。【1】
Accept:*/* 表示请求方希望接受的数据类型,如:text/xml
User-Agent: 内容包含发出请求的用户信息。
Accept-Language: zh-cn 请求的语言
Accept-Encoding: gzip, deflate 请求的编码格式
Cache-Control: no-cache 指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no -store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、 private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、 max-age。各个消息中的指令含义如下:
Public指示响应可被任何缓存区缓存。
Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
no-cache指示请求或响应消息不能缓存
no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
Connection: Keep-Alive 表示是否需要长链接
Range:bytes=92263-92266。请求的字段
接收端:
HTTP/1.1 206 PARTIAL CONTENT
http返回状态码
Accept-Ranges: bytes
响应的 HTTP 标头是由服务器使用以通告其支持部分请求的标志物。此字段的值表示可用于定义范围的单位。
如果存在Accept-Ranges
标题,浏览器可能会尝试恢复中断的下载,而不是从头再次开始。
Access-Control-Allow-Credentials: true响应报头指示的请求的响应是否可以暴露于该页面。当true
值返回时它可以被暴露。
Access-Control-Allow-Headers: Accept, Authorization,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Referrer-Policy,Access-Control-Allow-Origin,Access-Control-Allow-Headers,Access-Control-Allow-Credentials
响应报头在响应用于一个预检请求指示哪个HTTP标头将通过提供Access-Control-Expose-Headers
使实际的请求时。
的简单标头,Accept
,Accept-Language
,Content-Language
,Content-Type
(任一,但仅与一个MIME类型其解析值的(忽略参数)application/x-www-form-urlencoded
,multipart/form-data
或text/plain
),总是可用的,并且不需要由该头中列出。
如果请求具有标头,则此标头是必需的Access-Control-Request-Headers
。
Access-Control-Allow-Method: OPTIONS, POST, GET 响应标头指定响应访问所述资源到时允许的一种或多种方法预检请求。
Access-Control-Allow-Origin: * 响应 header 指示是否该响应可以与具有给定资源共享原点。
Cache-Control: public, max-age=43200 通用头字段用于指定在两个,请求和响应的缓存机制的指令。缓存指令是单向的,这意味着请求中的给定指令并不意味着将在响应中给出相同的指令。
Connection: keep-alive
Content-Length: 4 实体报头指示该实体主体的大小,以字节为单位的十进制数,发送到接收方。
Content-Range: bytes 92263-92266/61465192 响应的 HTTP 报头指示其中一个完整的身体信息的部分消息所属。
Content-Type: video/mp4 返回的文件类型
Date: Mon, 15 Jul 2019 06:32:50 GMT 通用 HTTP 报头包含在该消息起源的日期和时间。
ETag: "1522310940.96-61465192-1258164166"
所述ETag
HTTP 响应报头为资源的特定版本的标识符。它允许缓存更高效,并节省带宽,因为如果内容没有改变,Web 服务器不需要发送完整的响应。另一方面,如果内容发生了变化,etags 有助于防止资源的同时更新互相覆盖(“空中冲突”)。如果给定 URL 处的资源发生更改,则Etag
必须生成新值。因此,Etags 与指纹相似,也可能用于某些服务器的跟踪目的。它们的比较可以快速确定资源的两个表示是否相同,但它们也可能被设置为无限期地由跟踪服务器持续存在。
Expires: Mon, 15 Jul 2019 18:32:50 GMT
标头包含的日期/时间之后,响应被视为失效。无效的日期(如值0)代表过去的日期,表示资源已过期。如果Cache-Control
响应中包含带有“max-age”或“s-max-age”指令的Expires
标题,则标题将被忽略。
Last-Modified: Thu, 29 Mar 2018 08:09:00 GMT 响应HTTP报头包含在其原始服务器认为该资源的最后修改日期和时间。它被用作验证器来确定接收或存储的资源是否相同。不如ETag
标题准确,它是一种回退机制。包含条件请求If-Modified-Since
或If-Unmodified-Since
标题使用此字段。
Server: nginx/1.12.2 头包含有关用作原始服务器处理请求的软件信息。应该避免使用过长且详细的服务器值,因为它们可能会揭示内部实现细节,这些细节可能会使攻击者更轻松地找到并利用已知的安全漏洞。
Set-Cookie: session=eyJfcGVybWFuZW50Ijp0cnVlfQ.EA2vkg.EP7CtTZeoXh4MqfWy_PkXjN29o4; Expires=Mon, 15-Jul-2019 06:52:50 GMT; HttpOnly; Path=/ 所述Set-Cookie
HTTP 响应报头被用于从服务器向用户代理发送 cookie。有关更多信息,请参阅 HTTP cookie 指南。
参考文献:
【1】https://blog.youkuaiyun.com/theanarkh/article/details/53441342
【2】https://blog.youkuaiyun.com/professionit/article/details/71467192