HTTP的头部有什么参考:header头部字段汇总

2,693 阅读7分钟

HTTP请求行、请求头、请求体详解 / 详解 HTTP 头部信息

  • 根据实际用途划分:

  1. 通用首部字段:请求报文和响应报文两方都会使用到的首部。

    • 作用:通用头部是客户端和服务器都可以使用的头部,可以在客户端、服务器和其他应用程序之间提供一些非常有用的通用功能,如Date头部但与最终消息主体中传输的数据无关的消息头。
    首部字段说明
    Cache-Control控制缓存行为
    Connection逐跳首部、连接的管理
    Date创建报文的日期时间
    Pragma报文指令
    Transfer-Encoding指定报文传输主体的编码方式
    Upgrade升级为其他协议
    Via代理服务器的相关信息
    Warning错误通知
  2. 请求首部字段:从客户端向服务器发送请求报文时使用的首部。

    • 作用:是请求报文特有的,为服务器提供了一些额外信息,比如客户端希望接收什么类型的数据,如Accept头部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。
    首部字段说明示例
    Accept用户代理可以处理的媒体类型Accept: text/html
    Accept-Charset优先的字符集
    Accept-Encoding优先的内容编码。浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法Accept-Encoding: gzip, deflate
    AuthorizationWeb认证信息
    Except期待服务器的特定行为
    if-Match比较实体标记(ETag)
    if-Modified-Since比较资源的更新时间
    Range实体的字节范围请求
    Refer实体的字节范围请求
    TE传输编码的优先级
    User-AgentHTTP客户端程序的信息

    请求报文示例:

    GET /home.html HTTP/1.1
    Host: developer.mozilla.org
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:50.0) Gecko/20100101 Firefox/50.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate, br
    Referer: https://developer.mozilla.org/testpage.html
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1
    If-Modified-Since: Mon, 18 Jul 2016 02:36:04 GMT
    If-None-Match: "c561c68d0ba92bbeb8b0fff2a9199f722e3a621a"
    Cache-Control: max-age=0
    
  3. 响应头首部字段:从服务器端向客户端返回响应报文时使用的首部。

    • 作用:便于客户端提供信息。客服端在与哪种类型的服务器进行交互,如Server头部。补充了响应时的附加内容,也会要求客户端附加额外的内容信息。
    首部字段说明
    Accept-Ranges是否接受字节范围请求
    Age推算资源创建经过的时间
    ETag资源的匹配信息
    Location令客户端重定向至指定UPI
    Proxy-Authenticate代理服务器对客户端的认证信息
    WWW-Authenticate服务器对客户端的认证信息
    ServerHTTP服务器的安装信息。客服端在与哪种类型的服务器进行交互。
    Vary代理服务器的管理信息
  4. 实体首部字段:针对请求报文和响应报文的实体部分使用到的首部。

    • 作用:可以用实体头部来说明实体主体部分的数据类型,如Content-Type头部。补充了资源内容更新时间等与实体有关的信息。
    首部字段说明
    Allow资源可支持的HTTP方法
    Content-Encoding实体主体适用的编码方式
    Content-Language实体主体的自然语言
    Content-Length实体主体的大小
    Content-Location替代对应资源的URI
    Content-MD5实体主体的报文摘要
    Content-Range实体主体的位置范围
    Content-Type实体主体的媒体类型
    EXpires实体主体过期的日期时间
    Last-Modified资源的最后修改日期时间
  1. 数组和链表的区别

    数组链表
    数据结构:类型数据元素的集合节点的无序链接元素的集合
    使用索引直接找到元素从头开始找,所以链接列表的时候需要线性时间,速度也慢得多
    数组具有固定大小链接列表是动态和灵活的,可以扩展和缩小其大小
    数组中插入和删除等操作会占用大量时间链表插入、删除很快
    在编译期间分配内存在执行或运行时分配内存
    元素连续存储在数组中元素随机存储在链接列表中
    对内存的要求较少由于存储了额外的下一个和前一个引用元素,因此链接列表中需要更多内存
  2. 怎么判断是尾指针

    普通链表:p->next == NULL

    循环链表:p->next == HEAD

  3. 怎么判断链表是闭环

    快慢指针判断:让指针1每次向下移动一个节点,让指针2每次向下移动两个节点,然后比较两个指针指向的节点是否相同。如果相同,则判断出链表有环,如果不同,则继续下一次循环。

  4. vue的js函数为什么被称为第一公民

    函数式编程的特性:

    • 函数可以存储在变量中

    • 函数作为参数(高阶函数)

    • 函数作为返回值(高阶函数)

  5. vue的data的return有什么作用

    • 不使用return包裹的数据会在项目的全局可见,会造成变量污染

    • 使用return包裹后数据中变量只在当前组件中生效,不会影响其他组件

    • **后者的data是一个方法,**也就是:

      data:function(){
          return{
              
          }
      }
      
  6. vue和react的区别

    • 监听数据变化的实现原理不同

      1. Vue 通过 getter/setter 以及一些函数的劫持,能精确知道数据变化,不需要特别的优化就能达到很好的性能
      2. React 不精确监听数据变化:React 默认是通过比较引用的方式进行的,如果不优化(PureComponent/shouldComponentUpdate)可能导致大量不必要的VDOM的重新渲染
    • 数据流的不同

      1. Vue 组件 <--> DOM 之间的双向绑定

      2. React一直提倡的是单向数据流,他称之为 onChange/setState()模式

    • HoC 和 mixins

      1. Vue 中我们组合不同功能的方式是通过 mixin.Vue中组件是一个被包装的函数,并不简单的就是我们定义组件的时候传入的对象或者函数
      2. 在React中我们通过 HoC (高阶组件)。高阶组件本质就是高阶函数,React 的组件是一个纯粹的函数,所以高阶函数对React来说非常简单
    • 组件通信的区别

      1. Vue中有三种方式可以实现组件通信:

        - 父组件通过 props 向子组件传递数据或者回调,虽然可以传递回调,但是我们一般只传数据,而通过 事件的机制来处理子组件向父组件的通信

        - 子组件通过事件向父组件发送消息

        - 通过 V2.2.0 中新增的 provide/inject 来实现父组件向子组件注入数据,可以跨越多个层级。

      2. React也有三种:

        - 父组件通过 props 可以向子组件传递数据或者回调

        - 可以通过 context 进行跨层级的通信,这其实和 provide/inject 起到的作用差不多

      3. 综上:React 本身并不支持自定义事件,在 React 中我们都是使用回调函数的;Vue中子组件向父组件传递消息有两种方式:事件和回调函数,而且Vue更倾向于使用事件

    • 模板渲染方式的不同

      1. Vue是通过一种拓展的HTML语法进行渲染 / Vue是在和组件JS代码分离的单独的模板中,通过指令来实现的,比如条件语句就需要 v-if 来实现

      2. React 是通过JSX渲染模板 / React是在组件JS代码中,通过原生JS实现模板中的常见语法,比如插值、条件、循环等,都是通过JS语法实现的

    参考:个人理解Vue和React区别

  7. 为什么移动端要使用react

    • React最大的好处就是省去了细粒度操作的繁琐,又有大工程项目的可维护性

    • React可以服务端渲染

    • 虚拟DOM

    • 组件化

    • 兼容性确实比vue好

    • 但暴力依赖diff算法

  8. elementUI相关问题


本文首发于我的GitHub博客,其它博客同步更新。