图解HTTP(二)HTTP状态码及报文首部.md

一、HTTP状态码

1. 2xx成功:

  • 200 OK:处理成功
  • 204 No Content:处理成功,但没有资源可返回
  • 206 Partial Content:处理成功,返回资源的部分内容(请求中的Content-Range指定)

2. 3xx重定向:

  • 301 Moved Permanently:资源URI已经永久性更新,使用新地址访问
  • 302 Found:资源URL临时更新,且还有可能发生改变
  • 303 See Other:请求对应的资源存在着另一个 URI ,应使用 GET 方法定向获取请求的资源
  • 304 Not Modified:资源已经找到,但不符合条件请求

3. 4xx客户端错误:

  • 400 Bad Request:请求报文存在语法错误
  • 401 Unauthorized:首次请求时表示需要HTTP认证,之后表示认证失败
  • 403 Forbidden:拒绝该资源访问
  • 404 Not Found:找不到指定资源

4.5XX 服务器错误

  • 500 Internal Server Error:服务端内部错误
  • 503 Service Unavailable:服务超载或停机维护

二、HTTP 首部

1.无状态协议

HTTP不保留之前的请求或响应信息,保证了协议的可伸缩性,但对于需要有状态的应用可以通过引入Cookie实现状态保存

2.HTTP方法:

  • GET:获取资源
  • POST:向指定资源提交数据
  • PUT:向指定资源位置上传其最新内容
  • HEAD:获取资源元数据(与GET类似,但不返回报文主体)
  • DELETE:删除指定资源
  • OPTIONS(仅1.1及以后):使服务器传回该资源所支持的所有HTTP请求方法
  • TRACE(仅1.1及以后):回显服务器收到的请求,主要用于测试或诊断
  • CONNECT(仅1.1及以后):要求在与代理服务器通信时建立隧道,实现用隧道协议进行 TCP 通信(例如:SSL和TLS)

4.持久连接

  • 持久连接( HTTP Persistent Connections ,也称为 HTTP keep-alive 或 HTTP connection reuse )
    对于非持久连接,每次HTTP通信都要建立TCP连接

    而持久连接则可以对TCP连接进行复用,减少耗时,提高页面响应速度

  • 管线化
    管线化在持久连接的基础上进一步实现了多个请求并行,不用等到上一个请求响应后再发送下一个请求

5.Cookie状态管理

通过响应头中使用Set-Cookie来对客户端Cookie进行操作