HTTP 响应格式
这里就来揭开 HTTP 响应格式的秘密 …
HTTP 响应的基本格式:
- 状态行
- 响应头部
- 响应主体数据
状态行
对于请求有请求行,响应的第一行也很特别,叫做状态行 ( status line ) ,基本格式如下
HTTP[版本号] [状态码] [状态信息]
For example
HTTP/1.1 200 OK
状态码
是个什么东西…?
20x
的状态码都代表某种成功状态。最常见的 200 ,它的意义,就正如它后面跟的 状态信息 一样,代表一切 OK 。30x
的状态码,意味着资源已经被移动到其他地方了,但是响应中给出了应该跳转到哪里去找到这个资源。这个行为的 术语就叫做 redirect (重定向)。40x
的代码也都是代表一种客户端请求错误 。一个最常见的状态码 404 ,它的意 义也跟它后面紧跟的状态信息所说的 一样:Page Not Found (页面未找到)。50x
的状态吗也很常见。返回的如果是这一系列的状态码,就意味着 服务器端在处理请求的时候出错 。50x 出现,对于开发者,一般意味着服务器端代码出了错误。
响应头部 Headers
跟请求一样,响应也有自己的 Headers 。它的基本格式是
[ header 名]: [ header 值]
For example
Server: nginx/1.4.6 (Ubuntu)
Date: Fri, 09 Dec 2016 09:23:59 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
这些信息基本上都是用来描述后面要介绍的响应主体数据的,例如, Date
响应数据返回的时间, Content-Type
响应数据的格式( html )…
响应主体
响应主体,response body ,也可以叫做 payload 。
For example
<!DOCTYPE html>
<html>
<head>
<title>haoqicat</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
...
</head>
<body>
...
</body>
</html>
HTTP 的基本格式就唠完了,来补充一波…
HTTP 是一个无状态的协议
HTTP 是一个无状态的协议
所谓无状态( stateless )意思就是:对于之前的交互没有记录。每次交互能用的信息就只有这次交互所携带的信息。
换句话说,HTTP 协议是没有办法记住之前的一次请求的,所以也没有办法根据前一次请求来辅助后一次请求。当一个 Web 应用 看起来似乎可以记住之前的交互,例如,可以记住你的用户名,其实它采用的技巧已经超出了 HTTP 本身。HTTP 的信息就好像 是可以自销毁的,每次读取完毕,立刻就消失了。总之,HTTP 就是无状态的,也就是不能记录或者维持某种状态的。