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通信,它需要经过一下步骤:

  1. Open a TCP connection
  2. Send an HTTP message
  3. Read the response sent by the server
  4. Close or reuse the connection for further requests

HTTP Messages

Request

http简介 - 图1

Resource

http简介 - 图2

基于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

参考

https://developer.mozilla.org/en-US/docs/Web/HTTP