URL和URI
绝对URI
服务器地址:DNS解析 / IPv4 / 方括号中的IPv6
HTTP协议
http请求由客户端发起,服务器端响应并返回
请求报文:请求方法、请求URI、协议版本、请求首部字段、内容实体
响应报文:协议版本、状态码、原因短语、响应首部字段、实体
持久连接:HTTP/1.1中,所有连接默认持久连接
管线化:同时并行发送多个请求http方法
get 获取资源
- post 传输实体主体
- put 传输文件
- head 获得报文首部
- delete 删除文件
- options 询问支持的方法
- trace 追踪路径
-
cookie
http是无状态的协议,要保存状态需要使用cookie技术
服务器发送的响应报文中会中使用set-cookie的首部字段通知客户端保存cookie。下次客户端发送请求时会自动添加cookie后发送。服务器可通过cookie找到对应的状态历史HTTP报文
报文结构
报文传输
压缩:gzip / compress / deflate / identity
- 分块传输编码(chunked transfer coding)
- 由客户端负责解码
- 多部分对象集合(multipart)
- multipart/form-data
- multipart/byteranges
范围请求:请求中可以使用Range获取资源的部分bytes
服务器支持该方法会返回206 + multipart/byteranges,不支持会返回200 + 全部内容内容协商
客户端和服务器就响应的资源做交涉后,服务器端返回客户端最合适的资源
服务器驱动协商:更具请求首部字段为参考,由服务器自动选择
- 客户端驱动协商:用户做浏览器可选列表中手动选择
- 透明协商:两种方法结合
状态码
2XX 成功
- 200 OK
- 204 No Content
客户端向服务器发送信息,无需更新页面 -
3XX 重定向
301 / 302 / 303 大概率导致post请求变成get请求
301 Moved Permanently
请求的资源分配到了新的URI,应更新书签- 302 Found / 303 See Other / 307 Temporary Redirect
临时重定向,仅本次访问使用新uri 304 Not Modify
服务器允许访问资源,但可以直接使用客户端内未过期但缓存4XX 客户端错误
400 Bad Request
报文语法错误- 401 Unauthorized
需要认证,发送的请求需要通过HTTP认证(BASIC / DIGEST) - 403 Forbidden
访问被服务器拒绝 -
5XX 服务器错误
500 Internal Server Error
服务器端发生错误- 503 Service Unavailable
服务器不可用(超负载或者停机)

