HTTP 协议对应 Web 开发者来说都必须要了解的,无论技术背景或首选编程语言是什么,”请求-响应” 对话是驱动 Web 上通信的基础。
HTTP 概述
HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写。通常,由 HTTP 客户端发起一个请求,创建一个到服务器指定端口(默认是 80 端口)的 TCP 连接。HTTP 服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如 “HTTP/1.1 200 OK” ,以及返回的内容,如请求的文件、错误消息、或者其它信息。
平时我们在浏览器上输入网址,按回车就能浏览网页内容。这过程中主要分为两个部分 “请求” (浏览器向服务器发送的消息) 和 “响应” (服务器将处理结果返回给浏览器)。
HTTP 请求
HTTP 请求分为四格部分:请求行, 请求头, 空行, 请求主体,下面直接给出一个示例:
1 | GET /hello.txt HTTP/1.1 |
上示例中第一行为请求行,第二行为请求头,末尾有一个空行(即空行,必须要有)。
请求行包含:请求方法, 请求资源, 协议版本
常见的请求方法有GET
POST
HEAD
等
协议版本有 0.9, HTTP/1.0, HTTP/1.1在 HTTP/1.1协议中,所有的请求头,除 Host 外,都是可选的。点击 HTTP头字段 了解更多头字段。下面给出常用的请求头:
1 | host:请求的域名,必须要有 |
HTTP 响应
HTTP 响应分为四个部分:状态行, 响应头, 空行, 消息体(响应内容) 示例:
1 | HTTP/1.1 200 OK |
上示例中第一行为状态行,第二行至第九行处为响应头,第十行为空行,最后一行为消息体。
状态行包含:协议版本, 状态码, 状态描述。其中有关状态码更多的介绍可移步阅读 HTTP状态码
响应头更多信息可点击上文中的 “HTTP头字段” 链接查看。下面给出常见的响应头:
1 | server:服务器信息 |
其中一个重要的 HTTP 响应头 Content-Type 服务器上的每个资源都可以以不同的格式返回给客户端,如 HTML、XML 或 JSON 等;通过在 Content-Type 里设置如 text/html 这样的互联网媒体类型,可以告知客户端,服务器给出的响应格式是什么。常用的媒体类型可移步阅读 互联网媒体类型
拓展知识
HTTP 长连接说明,还有文中提到的“TCP\IP三次握手连接”
其中还有长轮询、服务器发送事件、WebSocket等知识点都与 HTTP 相关,在这就不拓展开了,读者可自行谷歌