HTTP协议
HTTP
HTTP是一种用作获取诸如HTML文档这类资源的协议,通过TCP或TLS(一种加密过的TCP连接)
可以控制的常见特性
1.缓存:HTTP可以控制文档如何被缓存
2.开放同源限制:同源限制就是Web浏览器强制在不同网站之间做的严格分割,只有来自于相同来源的网页才能获取一个网页的全部信息。HTTP可以减弱这种严格分离
3.认证:即网页对特定用户的认证,特定用户才可以访问。HTTP可以直接提供基本认证功能
4.代理服务器和隧道:服务器或客户端一般处于内网,是会对其他计算机隐藏真实ip地址。HTTP请求就要通过代理服务器越过这个网络屏障(注意:并非所有代理都是HTTP代理)
5.会话:在HTTP Cookie的帮助下,可以利用服务端的状态将不同请求联系在一起,即创建了对话
HTTP 流
流即为流水线
1.开启一个TCP连接
2.发送一个HTTP报文
3.读取服务端返回的报文信息
4.关闭连接或者为后续请求重用连接
HTTP报文
两种类型:请求和相应
请求
1 | GET / HTTP/1.1 |
其中有以下元素:
1.HTTP方法:通常是由一个动词,像 GET、POST 等,或者一个名词,像 OPTIONS、HEAD 等,来定义客户端执行的动作。
典型场景有:客户端意图获取某个资源(使用 GET);发送 HTML 表单的参数值(使用 POST);以及其他情况下需要的那些其他操作
2.获取资源的路径:去除了当前上下文中显而易见的信息之后的 URL,就是代码中“GET”和“HTTP”中间的“/”
比如说,它不包括协议(http://)、域名(这里是 developer.mozilla.org),或是 TCP 的端口(这里是 80)
3.HTTP协议版本号(在代码中是“HTTP/1.1”)
4.为服务端服务端表达其他信息的可选标头:
在代码中就是“
Host: developer.mozilla.org
Accept-Language: fr
”
这部分
5.请求体(body):类似于响应中的请求体,一些像 POST 这样的方法,请求体内包含需要了发送的资源。
响应
1 | HTTP/1.1 200 OK |
其中包含以下元素:
1.HTTP协议版本号(HTTP/1.1)
2.状态码:指明对应请求已成功执行或否,以及不成功时相应原因(代码中的“200”)
3.状态信息:简短的状态码描述(代码中的“OK”)
4.HTTP标头(与请求标头类似)
5.可选项:一个包含了被获取资源的主体
TCP
TCP指的是传输控制协议
HTTP Cookie
HTTP Cookie是服务器发送到用户浏览器并保存在本地的一小块数据。
作用
用于告知服务端两个请求是否来自同一浏览器
1.会话状态管理:用户登陆状态、购物车或其他需要记录的信息
2.个性化设置:用户自定义设置、主题等设置
3.浏览器行为跟踪:跟踪分析用户行为等
基于HTTP的API
1.Fetch API
2.server-sent事件
本文主要提炼于:
[HTTP指南](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Guides/Overview)




