HTTP 协议详解(请求报文 / 响应报文 / 常见字段 / GET / POST / 状态码)

HTTP 协议

超文本:图文、视频、超链接等等;尤其是超链接,能从一个超文本跳转到另外一个超文本。例如:HTML 就是最常见的超文本。

HTTP 协议超文本传输协议(HyperText Transfer Protocal),是一种在服务端和客户端之间传输超文本的应用层协议。

  • HTTP 是一种 无状态 (stateless) 协议,HTTP 协议本身不会对发送过的请求和相应的通信状态进行持久化处理。
  • 从而保证 HTTP 协议的简单性,能够快速处理大量的事务、提高效率。

HTTP 协议详解(请求报文 / 响应报文 / 常见字段 / GET / POST / 状态码)_第1张图片

HTTP 常见字段

Host:客户端发送的域名。

User-Agent:客户端信息。

Accept:客户端能够接受哪些数据格式。

Allow:允许哪些请求方法。

Cookie:存储用户信息。

ConnectionConnection: Keep-Alive,客户端要求服务端使用 HTTP 长连接机制,以便于其他请求复用。

  • HTTP 长连接的特点:只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。
  • 开启 HTTP Keep-Alive 机制后:保持连接,连接不会中断。当客户端发送请求时,使用同一个连接,持续到客户端或服务器端提出断开连接。
  • HTTP/1.1 版本的默认连接都是长连接,但为了兼容老版本的 HTTP,需要指定 Connection 字段的值为 Keep-Alive

Content-Type:响应的数据是什么格式。

Cotent-Length:响应的数据长度。

Set-Cookie:设置 HTTP Cookie。

GET 和 POST

GET:从服务器获取指定资源。

  • GET 请求的参数位置为 URL 中。
  • 浏览器对 URL 的长度有限制。

POST:根据请求报文 body 对指定的资源做出处理。

  • POST 请求携带数据的位置为 报文 body 中。
  • 浏览器不会对 body 大小做限制。

HTTP 状态码

1xx:属于 提示信息,是协议处理中的一种中间状态,实际用到的比较少。

2xx:服务器 成功处理 了客户端的请求。

  • 200 OK:一切正常。
  • 204 No Content:与 200 OK 基本相同,服务器成功处理,但未返回内容。
  • 206 Partial Content:应用于 HTTP 分块下载或断点续传,表示响应返回的 body 数据并不是资源的全部,而是其中的一部分。

3xx:客户端请求的资源发生了变动,需要客户端用新的 URL 重新发送请求获取资源,也就是 重定向

  • 301 Moved Permanently:永久重定向,说明请求的资源已经不存在了,需改用新的 URL 再次访问。

  • 302 Found:临时重定向,说明请求的资源还在,但暂时需要用另一个 URL 来访问。

    • 301 和 302 都会在响应头中使用字段 Location 指明后续要跳转的 URL,浏览器会自动重定向新的 URL。
  • 304 Not Modified:缓存重定向,资源未修改,重定向已存在的缓冲文件,也就是告诉客户端可以继续使用缓存资源。

4xx:客户端发送的 报文有误,服务器无法处理。

  • 400 Bad Request:客户端请求的报文有错误。
  • 403 Forbidden:服务器禁止访问资源,并不是客户端的请求出错。
  • 404 Not Found:请求的资源在服务器上不存在或未找到。
  • 405 Method Not Allowed:客户端请求的方法有错误。

5xx:客户端请求报文正确,但是 服务器处理时内部发生了错误,属于服务器端的错误码。

  • 500 Internal Server Error:与 400 类型,是个笼统通用的错误码,服务器发生了什么错误,我们并不知道。
  • 501 Not Implemented:客户端请求的功能还不支持。
  • 502 Bad Gateway:通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。
  • 503 Service Unavailable:服务器当前很忙,暂时无法响应客户端。

你可能感兴趣的:(Java,http,网络,网络协议,java,后端)