最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • HTTP相关-http协议

    正文概述 掘金(LJUp)   2021-02-27   490

    二,http协议

    1 基础概念

    1.1 报文格式

    • 请求报文是由请求方法、请求 URI、协议版本、可选的请求首部字段和内容实体构成的。

    HTTP相关-http协议

    • 响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。

    HTTP相关-http协议

    1.2 无状态

    • HTTP 是不保存状态的协议
    • 使用 HTTP 协议,每当有新的请求发送时,就会有对应的新响应产生。协议本身并不保留之前一切的请求或响应报文的信息。这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把 HTTP 协议设计成如此简单的。
    • HTTP/1.1 虽然是无状态协议,但为了实现期望的保持状态功能,于是引入了 Cookie 技术。有了 Cookie 再用 HTTP 协议通信,就可以管理状态了。

    1.3 http方法

    • GET和POST最常用
    • HEAD 方法和 GET 方法一样,只是不返回报文主体部分。用于确认URI 的有效性及资源更新的日期时间等。
    • PUT和DELETE因自身不带验证机制,任何人都可以上传/删除文件 , 存在安全性问题。当配合 Web 应用程序的验证机制,或遵守 REST 标准时还是有可能会开放使用的。

    HTTP相关-http协议

    1.4 持久连接和管线化技术

    • 持久连接在建立 1 次 TCP 连接后进行多次请求和响应的交互
      • 减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。
      • 减少开销的那部分时间,使HTTP 请求和响应能够更早地结束,这样 Web 页面的显示速度也就相应提高了。
      • 在 HTTP/1.1 中,所有的连接默认都是持久连接。
    • 管线化技术能够做到同时并行发送多个请求,而不需要一个接一个地等待响应了。
      • 管线化技术则比持久连接还要快。请求数越多,时间差就越明显。

    2 http报文

    2.1 报文结构

    HTTP相关-http协议

    2.2 编码

    • HTTP 在传输数据时可以按照数据原貌直接传输,但也可以在传输过程中通过编码提升传输速率。通过在传输时编码,能有效地处理大量的访问请求。但是,编码的操作需要计算机来完成,因此会消耗更多的 CPU 等资源。
    • 通常,报文主体等于实体主体。只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异。
    • 常用的内容编码

    HTTP相关-http协议

    • 分块传输编码:在传输大容量数据时,通过把数据分割成多块(chunk),能够让浏览器逐步显示页面。

    2.3 多部分对象集合

    发送的一份报文主体内可含有多类型实体。通常是在图片或文本文件等上传时使用。

    • multipart/form-data 在 Web 表单文件上传时使用。

    HTTP相关-http协议

    • multipart/byteranges 状态码 206响应报文包含了多个范围的内容时使用。

    2.4 范围请求

    如果下载过程中遇到网络中断的情况,能从之前下载中断处恢复下载。 HTTP相关-http协议

    • 针对范围请求,响应会返回状态码为 206 Partial Content 的响应报文。
    • 对于多重范围的范围请求,响应会在首部字段 ContentType 标明 multipart/byteranges 后返回响应报文。

    2.5 内容协商

    客户端和服务器端就响应的资源内容进行交涉,会以响应资源的语言、字符集、编码方式等作为判断的基准。

    • 请求报文中的首部字段
      • Accept
      • Accept-Charset
      • Accept-Encoding
      • Accept-Language
      • Content-Language

    3 http状态码

    状态码如 200 OK,以 3 位数字和原因短语组成。

    3.1 2xx

    • 200 OK 请求已正常处理
    • 204 No Content 一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用。
      • 浏览器显示的页面不发生更新。比如对于a标签,如果链接的页面响应码为204,页面也不会发生跳转。
    • 206 Partial Content 客户端进行了范围请求,而服务器成功执行了这部分的GET请求。

    3.2 3xx

    当浏览器接受到头信息中的 Location: xxxx 后,就会自动跳转到 xxxx 指向的URL地址,这点有点类似用 js 写跳转。

    • 301 Moved Permanently 请求的资源已被分配了新的 URI,建议修改书签URI
    • 302 Found 请求的资源已被分配了新的 URI,将来还有可能发生改变
    • 303 See Other 请求对应的资源存在着另一个 URI,应使用 GET方法定向获取请求的资源
    • 304 Not Modified 客户端发送附带条件的请求,服务器端允许请求访问资源,但未满足条件的情况。
      • 附带条件的请求是指采用 GET方法的请求报文中包含 If-Match,If-ModifiedSince,If-None-Match,If-Range,If-Unmodified-Since 中任一首部。
      • 304 虽然被划分在 3XX 类别中,但是和重定向没有关系。

    3.4 4xx

    表明客户端是发生错误的原因所在。

    • 400 Bad Request 请求报文中存在语法错误。
    • 401 Unauthorized 表示发送的请求需要有通过 HTTP 认证的认证信息。另外若之前已进行过 1 次请求,则表示用户认证失败。
    • 403 Forbidden 对请求资源的访问被服务器拒绝了。
    • 404 Not Found 表明服务器上无法找到请求的资源。
      • 也可以在服务器端拒绝请求且不想说明理由时使用。

    3.5 5xx

    • 500 Internal Server Error 表明服务器端在执行请求时发生了错误。
    • 503 Service Unavailable 表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

    4 通信数据转发程序

    HTTP 通信时,除客户端和服务器以外,还有一些用于通信数据转发的应用程序,例如代理、网关和隧道。可以将请求转发给通信线路上的下一站服务器,并且能接收从那台服务器发送的响应再转发给客户端。

    4.1 代理

    代理是一种有转发功能的应用程序,它扮演了位于服务器和客户端“中间人”的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。

    • 每次通过代理服务器转发请求或响应时,会追加写入 Via 首部信息

    4.2 网关

    网关是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。有时客户端可能都不会察觉,自己的通信目标是一个网关。

    • 网关能使通信线路上的服务器提供非 HTTP 协议服务。
    • 利用网关能提高通信的安全性,因为可以在客户端与网关之间的通信线路上加密以确保连接的安全。

    4.3 隧道

    隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。

    5 http首部

    5.1 通用首部

    请求报文和响应报文两方都会使用的首部。

    HTTP相关-http协议

    • Cache-Control 能操作缓存的工作机制。
      • no-cache 代表不缓存过期的资源,缓存会向源服务器进行有效期确认后处理资源,no-store 才是真正地不进行缓存。
    • Connection
      • 控制不再转发给代理的首部字段
      HTTP相关-http协议
      • 管理持久连接
        • HTTP/1.1 版本的默认连接都是持久连接。当服务器端想明确断开连接时,则指定Connection 首部字段的值为 Close。
        • HTTP/1.1 之前的 HTTP 版本的默认连接都是非持久连接。要维持持续连接,则需要指定Connection 首部字段的值为 Keep-Alive。
    • Via 为了追踪客户端与服务器之间的请求和响应报文的传输路径。

    HTTP相关-http协议

    5.2 请求首部字段

    从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。

    HTTP相关-http协议

    • Accept-Encoding 告知服务器用户代理支持的内容编码及内容编码的优先级顺序。
    • Host 虚拟主机运行在同一个 IP 上,因此使用首部字段 Host 加以区分
      • Host 首部字段在 HTTP/1.1 规范内是唯一一个必须被包含在请求内的首部字段。若服务器未设定主机名,那直接发送一个空值即可。

    5.3 响应首部字段

    从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。

    HTTP相关-http协议

    5.4 实体首部字段

    针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。

    HTTP相关-http协议

    5.5 Cookie相关的首部字段

    • Set-Cookie

    HTTP相关-http协议


    起源地下载网 » HTTP相关-http协议

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元