图解HTTP
HTTP方法
- GET 获取资源
- POST 传输实体主体
- PUT 传输文件
- HEAD 获得报文首部
- DELETE 删除we那件
- OPTIONS 询问支持的方法
- TRACE 追踪路径
- CONNECT 要求用隧道协议连接代理 (CONNECT 代理服务器名:端口号 HTTP版本)
持久连接
- HTTP keep-alive 或 HTTPconnection reuse
管线化
- 不等待响应,直接发送下一个请求
HTTP 报文
- 请求报文和响应报文
- 请求行
- 请求首部字段
- 通用首部字段
- 实体首部字段
- 其他
- 空行
- 报文主体
- 状态行
- 响应首部字段
- 通用首部字段
- 实体首部字段
- 其他
- 空行
- 报文主体
压缩传输的内容编码
- gzip (GNU zip)
- compress (UNIX 系统的标准压缩)
- deflate (zlib)
- identity (不进行编码)
发送多种数据的多部分对象集合
- MIME multipart/form-data multipart/byteranges
- 获取部分内容的范围请求 range
返回结果的HTTP状态码
状态码 | 类别 | 原因短语 |
---|---|---|
1XX | Informational(信息性状态码) | 接收的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务端无法处理请求 |
5XX | Server Error(服务端错误状态码) | 服务端处理请求错误 |
200 ok
204 No Content 请求处理成功! 但没有资源可返回
返回204 浏览器显示的页面不发生更新
(一般在只需要从客户端往服务器发送信息,而客户端不需要发送新信息内容的情况下使用.) 返回204 浏览器的页面不
206 Partial Content
该状态码标识客户端进行了范围请求,而服务器成功执行了这部分的GET请求.
响应报文中包含由Content-Range 指定范围的实体内容.
301 Moved Permanenttly 永久重定向
客户端需要进行书签引用的变更
资源的URI 已更新,你也更新下你的书签引用吧
302 Found 临时重定向
该状态表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问.
303 See Other
服务器-资源的URI已更新,你是否能临时按新的URI访问?
303 和 302 有着相同的功能,但303 状态码明确表示客户端应当采用GET方法获取资源.
304 Not Modified 服务器端的资源未改变,可直接使用客户端未过期的缓存
304 返回时不包含任何响应的主体部分
307 Temporary Redirect 临时重定向
307 会遵照浏览器标准,不会从POST变成GET
400 Bad Request
该状态标识请求的报文中存在语法错误.
401 Unauthorized
该状态表示发送的请求需要有通过HTTP认证.
403 Forbidden
该状态码表明对请求资源的访问被服务器拒绝了.
404 Not Found 服务器没有请求的资源
也可以在服务端拒绝请求且不想说明理由时使用.
500 Internal Server Error 貌似,内部资源出故障了…
该状态码表明服务器端在执行请求时发生了错误.
503 Service Unavailable
表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求.
如果实现得知解除以上状况需要的时间,最好写入Retry-After 首部字段再返回给客户端.