Hypertext Transfer Protocol(HTTP)是应用层协议。它被设计用于在web浏览器和服务器之间进行通信,也能用于一些其他的目的。HTTP是无状态的协议,尽管它通常基于TCP/IP协议,但是它也能被用于任何可靠的传输协议。
HTTP的基本特点
简单,可扩展,无状态,基于连接
通过HTTP进行控制
Cache
HTTP 可以控制文档如何被缓存,server可以指示proxies,clients缓存什么以及缓存多久. client可以指示中间缓存代理忽略缓存的文档.
Relaxing the origin constraint
为了阻止隐私窥探, web浏览器强制web站点间严格的分离. 只有同源的页面可以访问页面的所有信息. HTTP headers可以放宽这个限制.
Authentication
Proxy and tunneling
Sessions
HTTP flow
当client想要和server通信,它需要经过一下步骤:
- Open a TCP connection
- Send an HTTP message
- Read the response sent by the server
- Close or reuse the connection for further requests
HTTP Messages
Request
Resource
基于HTTP的APIs
最常用的是 [XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest)
, 用于在user agent和server之间交换数据. 现代的Fetch API
, 提供了形同的特征,但是更加强大和灵活. 另一个API, server-sent events 是一个允许server向client发送events的单向服务.
HTTP2.0
https://httpwg.org/specs/rfc7540.html