

























书籍信息:《图解HTTP》作者:上野宣,译者:于均良
出版社:人民邮电出版社,2014年5月第1版
你一定见过这些数字:404、500、502……它们就像互联网的表情包,用三个数字告诉你发生了什么。200 是"没问题老铁",404 是"你找啥呢",500 是"我裂开了"。今天我们就来把这些状态码翻译成人话,顺便聊聊为什么你的接口明明报错了,前端却收到的全是 200。

|
类别 |
描述 |
|
1XX |
Informational(信息性状态码)- 接收的请求正在处理 |
|
2XX |
Success(成功状态码)- 请求正常处理完毕 |
|
3XX |
Redirection(重定向状态码)- 需要进行附加操作以完成请求 |
|
4XX |
Client Error(客户端错误状态码)- 服务器无法处理请求 |
|
5XX |
Server Error(服务器错误状态码)- 服务器处理请求出错 |


Content-Range指定范围的实体内容。
注意:301、302、303响应返回时,几乎所有浏览器都会把POST改成GET并删除请求主体,尽管标准禁止这样做。
/时常触发。




WWW-Authenticate首部。



Retry-After首部告知客户端何时重试。
1. 使用curl查看不同状态码的响应
# 200 OK - 正常请求 curl -o /dev/null -w "状态码: %{http_code}\n" http://www.example.com/301/302 - 观察重定向行为
curl -v http://github.com 2>&1 | grep -E "HTTP/|Location:"
404 Not Found
curl -o /dev/null -w "状态码: %{http_code}\n" http://www.example.com/not-exist-page
500 Internal Server Error(可使用httpbin测试)
curl -o /dev/null -w "状态码: %{http_code}\n" http://httpbin.org/status/500
2. 测试范围请求与206状态码
# 发送范围请求,应返回206 Partial Content curl -I -H "Range: bytes=0-99" http://httpbin.org/robots.txt输出中应包含:
HTTP/1.1 206 Partial Content
Content-Range: bytes 0-99/...
3. 测试304 Not Modified(条件请求)
# 第一次请求,记录Last-Modified时间 curl -I http://www.example.com/ 2>&1 | grep -i "last-modified"使用If-Modified-Since发送条件请求
curl -I -H 'If-Modified-Since: Fri, 31 Aug 2007 02:02:20 GMT' http://www.example.com/
如果资源未修改,返回 304 Not Modified
4. 测试401 Unauthorized认证
# 访问需要认证的页面 curl -v http://httpbin.org/basic-auth/user/passwd # 返回 401 Unauthorized 和 WWW-Authenticate 首部提供认证信息后重试
curl -v -u user:passwd http://httpbin.org/basic-auth/user/passwd
返回 200 OK
5. 使用curl测试各种HTTP状态码
# httpbin.org 提供了便捷的状态码测试接口
for code in 200 204 301 302 304 400 401 403 404 500 503; do
echo -n "状态码 $code: "
curl -o /dev/null -s -w "%{http_code}" http://httpbin.org/status/$code
echo
done
状态码这东西,用对了是 API 的门面,用错了就是前端的噩梦。记住一个原则:该报错就报错,别什么都返回 200。你的同事会感谢你的。下一章我们离开协议本身,看看 HTTP 是怎么跟各种 Web 服务器打配合的。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。