zoukankan      html  css  js  c++  java
  • Http协议中消息概念之响应头

    说明:旨在说明Http响应头的诸属性,要述说的内容基于Http协议的完整定义,但是Http协议不做完全的阐释,也不精确说明要讲述的概念是Http协议中那些概念的组成部分及与之关    系。仅仅为实际需要,截取出响应头部分本身,只关于于此。

        

    Header解释示例
    Accept-Ranges 表明服务器是否支持指定范围请求及哪种类型的分段请求 Accept-Ranges: bytes
    Age 从原始服务器到代理缓存形成的估算时间(以秒计,非负) Age: 12
    Allow 对某网络资源的有效的请求行为,不允许则返回405 Allow: GET, HEAD
    Cache-Control 告诉所有的缓存机制是否可以缓存及哪种类型 Cache-Control: no-cache
    Content-Encoding web服务器支持的返回内容压缩编码类型。 Content-Encoding: gzip
    Content-Language 响应体的语言 Content-Language: en,zh
    Content-Length 响应体的长度 Content-Length: 348
    Content-Location 请求资源可替代的备用的另一地址 Content-Location: /index.htm
    Content-MD5 返回资源的MD5校验值 Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
    Content-Range 在整个返回体中本部分的字节位置 Content-Range: bytes 21010-47021/47022
    Content-Type 返回内容的MIME类型 Content-Type: text/html; charset=utf-8
    Date 原始服务器消息发出的时间 Date: Tue, 15 Nov 2010 08:12:31 GMT
    ETag 请求变量的实体标签的当前值 ETag: “737060cd8c284d8af7ad3082f209582d”
    Expires 响应过期的日期和时间 Expires: Thu, 01 Dec 2010 16:00:00 GMT
    Last-Modified 请求资源的最后修改时间 Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT
    Location 用来重定向接收方到非请求URL的位置来完成请求或标识新的资源 Location: http://www.zcmhi.com/archives/94.html
    Pragma 包括实现特定的指令,它可应用到响应链上的任何接收方 Pragma: no-cache
    Proxy-Authenticate 它指出认证方案和可应用到代理的该URL上的参数 Proxy-Authenticate: Basic
    refresh 应用于重定向或一个新的资源被创造,在5秒之后重定向(由网景提出,被大部分浏览器支持)
     

     

    Refresh: 5; url=
    http://www.zcmhi.com/archives/94.html
    Retry-After 如果实体暂时不可取,通知客户端在指定时间之后再次尝试 Retry-After: 120
    Server web服务器软件名称 Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
    Set-Cookie 设置Http Cookie Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
    Trailer 指出头域在分块传输编码的尾部存在 Trailer: Max-Forwards
    Transfer-Encoding 文件传输编码 Transfer-Encoding:chunked
    Vary 告诉下游代理是使用缓存响应还是从原始服务器请求 Vary: *
    Via 告知代理客户端响应是通过哪里发送的 Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
    Warning 警告实体可能存在的问题 Warning: 199 Miscellaneous warning
    WWW-Authenticate 表明客户端请求实体应该使用的授权方案 WWW-Authenticate: Basic

     CASE1:


    Response Headers

    Accpet-ranges:bytes

    • 作用:表明自己是否接收获取某个实体的一部分(比如文件的一部分)
    • 解释:接受
    • 延伸:服务器支持断点续传,以及同时下载文件的多个部分时,必须设置为 bytes

    Alt-svc: hq=”:443”; ma=2592000; quic=51303431; quic=51303339; quic=51303338; quic=51303337; quic=51303335,quic=”:443”; ma=2592000; v=”41,39,38,37,35”

    • 作用:服务器使用“alt-svc”(Alternative Servicesde)标识资源,可以通过不同的网络位置或者网络协议进行获取

    Content-length:24211

    • 作用:HTTP消息实体的传输长度
    • 解释:该实体的传输长度(被 br 压缩后的长度为)24211

    Content-encoding:br

    • 作用:设置数据使用的编码类型(压缩类型)
    • 解释:数据使用 br 进行压缩后返回到浏览器上

    Content-type:text/html; charset=UTF-8

    • 作用:设置响应体的媒体资源类型(MIME)
    • 解释:服务器发送 html 文档,字符集为 UTF-8

    Age:1037016

      • 作用:表明该响应从缓存中拿到时响应的寿命,代理服务器当前的系统时间与此应答消息中的通用消息头Date的值之差
      • 解释:该响应在缓存代理中存放了 1037016 秒

    Date:Thu, 15 Feb 2018 20:31:45 GMT

    • 作用:设置响应被服务器创建的时间
    • 解释:在 GMT(格林威治标准时间)Thu, 15 Feb 2018 20:31:45,发送的响应

    Expires:Fri, 01 Feb 2019 17:33:57 GMT

    • 作用:设置响应体的过期时间。如果在过期之前进行访问,就会读取缓存中的版本。
    • 解释:在 GMT(格林威治标准时间)Fri, 01 Feb 2019 17:33:57,在这个时间之前,客户端不用再向服务器发送请求
    • 延伸:如果和 Cache-control 同时存在,那么被其中的 max-age 覆盖

    Last-modified:Mon, 12 Dec 2016 14:45:00 GMT

    • 作用:设置该文件在服务器端中最后被修改的时间
    • 解释:在 GMT(格林威治标准时间)Fri, 01 Feb 2019 17:33:57,该文件被服务器所修改

    Vary:Accept-Encoding

    • 作用:服务器响应时根据请求头中的的值返回不同的内容的
    • 过程:浏览器 —> 请求 —> squid —> 请求 —> apache
    • 解释:
      • apache 在 response headers 中 返回了 vary: Accept-Encoding,
      • 在 squid 中需要存储该 encoding 的值作为缓存 key 的值,比如,resourse_1 : gzip, resourse_2: deflate
      • 下次请求到 squid,需要先找到缓存文件的索引文件,根据不同的 accept-Encoding(gzip、deflate)的值来找相应的文件。

    p3p:CP=”This is not a P3P policy! See g.co/p3phelp for more info.”

    • 作用:隐私安全平台(the Platform for Privary Preferences),网站向浏览器申明自己的隐私政策。

    Server: gws

    • 作用:设置服务器名称

    Set-cookie:

    • 作用:设置 http 的 Cookie

    Status: 200

    • 作用:设置HTTP的响应状态
    • 解释:200 代表成功请求

    Strict-transport-security: max-age=3600

    • 作用:HSTS 策略,告诉 HTTP 客户端缓存 HTTPS 策略多少时间。
    • 解释:在 3600 秒内,不管用户在浏览器输入不带协议的网址如:google.com 时,还是http协议的网址如:http://google.com ,都会默认将请求内部跳转到 https://google.com

    X-frame-options: SAMEORIGIN

    • 作用:点击劫持保护
    • 解释:页面可以在相同域名页面的 frame中展示

    X-content-type-options: nosniff

    • 作用:设置浏览器的”MIME”攻击机制
    • 解释:服务器中的内容是 image/png,那么浏览器就会显示为 image/png

    X-xss-protection:1; mode=block

      • 作用:设置浏览器的XSS防护机制
      • 解释:浏览器如果检测到恶意代码,则不渲染恶意代码

    CASE2:

    Content-Encoding:gzip + Content-Type:text/html

    • 作用:声明文档的压缩类型和文档的确切MIME类型
    • 解释:文档使用的 MIME 类型是 text/html,并且对内容进行了 gzip 压缩

    Etag + Last-Modified

      • 作用:服务器给文件资源打上的标签,客户端传回 Last-Modified / Etag 给服务器验证缓存
      • 流程:
        • 客户端请求资源 example.html
        • 服务器返回资源,并且给该 html 连同 Etag + Last-Modified 一起缓存
        • 客户端再次请求资源 example.html,并且将 if-None-Match 一起传给服务器
        • 服务器计算存在服务器中的 eamples.html de Etag,并且与客户端传来的 if-None-Match:Etag 或者 Last-Modified 进行匹配:
        • if-None-Match-false:返回 304 和空的响应头
        • if-None-Match-true:返回 200 和新修改的资源,如果其中的某个值没有改变,那么就返回 304 和一个空的响应头
      • Last-Modified:文件上次修改的时间(精确到秒)

      • Etag: 实体标签(Entity Tag),标识该资源的状态,ETag 如果改变,说明资源状态已经改变,能够修复 Last-Modified 的一些问题。

        • 服务器的文件可能只改变了修改时间,而内容没有改变,客户端不希望认为文件已经修改
        • 文件在秒以下的时间进行修改
  • 相关阅读:
    react脚手架搭建及配置
    mac使用技巧
    nginx配置
    vue常见前端UI库
    自定义指令
    代码缩进修改
    webpack学习入门
    webpack使用extract-text-webpack-plugin打包时提示错误
    webpack未成功全局安装
    基于jQuery的AJAX实现三级联动菜单
  • 原文地址:https://www.cnblogs.com/10000miles/p/9220537.html
Copyright © 2011-2022 走看看