内容简介:前端开发中总是要和接口打交道,所以为了尽可能减少自己表述上的不严谨,文中会有不少外链,建议大家还是能点进去看一下,也欢迎帮忙纠正。老司机可以直接忽略本段内容,我们先简单了解下
前言
前端开发中总是要和接口打交道,所以 HTTP
相关内容多多少少还是要知道一些,干起活来才能事半功倍。下面我从业务出发,简单说下一些可能会碰到的知识点。
为了尽可能减少自己表述上的不严谨,文中会有不少外链,建议大家还是能点进去看一下,也欢迎帮忙纠正。
开始前的准备
老司机可以直接忽略本段内容,我们先简单了解下 HTTP
的基本知识
什么是HTTP协议
HTTP
是 Hypertext Transfer Protocol
超文本传输协议 的缩写,和 HTML
一样都是出自 Hypertext
家族的。处于 OSI model
中的应用层。
目前为止,经历了几个版本的迭代到了2, HTTP/3目前也是即将要标准化了
关于目前所有的HTTP相关协议的目录可以直接看 这里
wikipedia上关于HTTP的介绍
The Hypertext Transfer Protocol (HTTP) is an application protocol for distributed, collaborative, hypermedia information systems.[1] HTTP is the foundation of data communication for the World Wide Web, where hypertext documents include hyperlinks to other resources that the user can easily access, for example by a mouse click or by tapping the screen in a web browser. HTTP was developed to facilitate hypertext and the World Wide Web.
Development of HTTP was initiated by Tim Berners-Lee at CERN in 1989. Development of HTTP standards was coordinated by the Internet Engineering Task Force (IETF) and the World Wide Web Consortium (W3C), culminating in the publication of a series of Requests for Comments (RFCs). The first definition of HTTP/1.1, the version of HTTP in common use, occurred in RFC 2068 in 1997, although this was made obsolete by RFC 2616 in 1999 and then again by the RFC 7230 family of RFCs in 2014.
A later version, the successor HTTP/2, was standardized in 2015 (and HTTP/3 is its proposed successor (Internet Draft), that builds on HTTP/2 2 ), and is now supported by major web servers and browsers over Transport Layer Security (TLS) using Application-Layer Protocol Negotiation (ALPN) extension[4] where TLS 1.2 or newer is required.[5]
起始
最早是由万维网的创始人 Tim Berners-Lee 在1989年发起并于1990年完成了第一次服务器与客户端之间的通讯。
HTTP/0.9
发布于1991年的0.9版本,当时只有一个 GET
命令,只能回应HTML格式的字符串,结束以后就关闭TCP连接
HTTP/1.0 RFC-1945
发布于1996年的 1.0 版本,除了最早的 GET
以外还引入了 POST
和 HEAD
命令,以及各类标识缓存,请求状态等headers,使任何文件都可以通过http请求进行传输。
HTTP/1.1 RFC-2616
发布于1999年的 1.1 版本,也是目前使用基数最大的版本,
新增了几个基础 Method
- PUT
- DELETE
- TRACE
- OPTIONS
- CONNECT
弥补了之前HTTP/1.0的一些不足, 包括:
-
完善了之前缓存相关的设定,也便有了我们现在常说的
强缓存
和协商缓存
的概念 - 默认采用持久连接,并能很好地配合代理服务器工作。支持以 piplining 的方式同时发送多个请求,从而降低了线路的负载也提升了HTTP请求的响应速度。
- 部分安全性问题
HTTP/2.0 RFC-7540
发布于2015年的 2.0 版本,也是当前的最新标准。
基于谷歌提出的 SPDY 而来,之前用于Chrome浏览器中来访问Google的SSL加密服务,在HTTP/2发布后功成身退。
主要新增了以下内容
- 多路复用
- 请求头压缩 HPACK: RFC-7541
- 帧、消息、流和TCP连接
- 服务器推送
因为强制绑定了TLS,相关的证书又是一笔新的开支,加上各种历史遗留问题,目前大部分公司对HTTP/2的支持也是较为尴尬,就如同 ES6
一般,在落地好多年后依旧会被叫做 新特性
。
而解决的问题如服务器推送之类的在之前是可以通过 websocket
甚至客户端轮询等操作解决,而头部压缩等也只是对现有方式进行了少部分优化,所以实际应用也没那么多,而出现的不确定性又增多了,而本身又揽了一些TCP干的活,所以协议定下后争议还是挺多的。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。