文章目录

  • 什么是HTTP协议
  • HTTP协议的特点
  • HTTP协议常用方法
  • HTTP常见错误码:
  • 301和302的区别
  • 401与403的区别


什么是HTTP协议

HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议,用于在客户端和服务器之间进行通信。HTTP 协议定义了 Web 客户端和服务器之间互相通信的格式和规则,是互联网信息交换的基础

  • HTTP是基于请求-响应模型的协议,客户端发送HTTP请求到服务器,服务器处理请求并返回相应的HTTP响应。
  • HTTP使用URL(Uniform Resource Locator)来标识要获取的资源的位置。客户端通过URL指定要请求的资源,例如网页、图像、视频等。
  • HTTP协议通常使用TCP/IP作为传输协议,通过端口号80进行通信。
  • HTTP协议是无状态的,服务器不会保存之前请求的任何状态信息。为了维护会话状态,可以使用Cookie和Session等机制。
  • HTTP 使用统一资源标识符(Uniform Resource Identifier)来定位要访问的资源。
    最常见的 URI 即 URL,比如 https://www.example.com/index.html。

HTTP协议的特点

  • 简单:HTTP的请求和响应都是由文本构成,易于阅读和理解。它使用简单的命令集来完成通信。
  • 可扩展:HTTP的头部允许添加自定义的字段,可以根据需求扩展协议。
  • 无连接:每个HTTP请求都是独立的,服务器在处理完请求后会断开与客户端的连接。这种无连接的特性可以减轻服务器的负载,但也会增加连接的建立和关闭的开销。
  • 无状态:服务器不会保存之前请求的状态信息,每个请求都是相互独立的。这意味着每个请求都需要包含所有必要的信息,例如身份验证凭据等。
  • 支持缓存:HTTP支持客户端和服务器之间的缓存机制,可以减少数据传输量和提高性能。

HTTP协议常用方法

  1. GET
  • 用于获取资源
  • 只请求资源,不修改资源
  • 可以缓存
  • 幂等操作
  • 有长度限制
  • 参数通过查询字符串传递
  1. POST
  • 用于创建资源
  • 可以创建新的资源,也可以修改资源
  • 不安全,不可缓存
  • 不幂等
  • 没有长度限制
  • 参数通过请求体传递
  1. PUT
  • 用于替换资源
  • 整个替换资源,或创建指定URI的资源
  • 不安全,可缓存
  • 幂等操作
  • 没有长度限制
  • 参数通过请求体传递
  1. PATCH
  • 用于部分更新资源
  • 只更新资源的一部分
  • 不安全,不可缓存
  • 不幂等
  • 没有长度限制
  • 参数通过请求体传递
  1. DELETE
  • 用于删除资源
  • 删除指定的资源
  • 不安全,不可缓存
  • 幂等操作
  • 没有请求体
  1. HEAD
  • 与GET方法相同,但只返回报文头
  • 获取报文首部以确定资源状态及元数据
  • 对性能和资源消耗最小
  1. OPTIONS
  • 用于查询支持的方法
  • 可以查询服务器对特定资源支持的HTTP方法
  • 幂等操作

HTTP常见错误码:

当客户端与服务器进行HTTP通信时,可能会遇到各种错误码。以下是HTTP错误码的更多详细列举,按照不同的错误类别划分:

1XX 信息性状态码(Informational)

  • 100 Continue:请求已成功收到,客户端应继续发送请求的其余部分。
  • 101 Switching Protocols:服务器已理解客户端的协议升级请求,并将其切换到新协议。

2XX 成功状态码(Success)

  • 200 OK:请求成功,服务器成功处理了请求。
  • 201 Created:请求成功,服务器成功创建了新的资源。
  • 202 Accepted:请求已接受,但尚未处理完成。
  • 204 No Content:请求成功,但响应报文中没有实体的主体部分。

3XX 重定向状态码(Redirection)

  • 300 Multiple Choices:请求的资源有多个位置可供选择。
  • 301 Moved Permanently:请求的资源已永久移动到新位置。
  • 302 Found:请求的资源暂时移动到其他位置。
  • 304 Not Modified:客户端缓存的资源未修改,可以使用缓存的版本。

4XX 客户端错误状态码(Client Errors)

  • 400 Bad Request:服务器无法理解客户端发送的请求。
  • 401 Unauthorized:请求需要身份验证,但客户端未提供有效的身份验证信息。
  • 403 Forbidden:服务器拒绝了请求,客户端没有访问所请求资源的权限。
  • 404 Not Found:请求的资源不存在于服务器上。
  • 405 Method Not Allowed:请求方法不被允许。

5XX 服务器错误状态码(Server Errors)

  • 500 Internal Server Error:服务器在处理请求时遇到了错误。
  • 501 Not Implemented:服务器不支持客户端请求的功能或方法。
  • 502 Bad Gateway:作为代理或网关的服务器从上游服务器接收到无效的响应。
  • 503 Service Unavailable:服务器暂时无法处理请求,通常由于过载或维护。
  • 504 Gateway Timeout:作为代理或网关的服务器在等待上游服务器的响应时超时。

301和302的区别

301和302是HTTP协议中的重定向状态码,用于指示请求的资源已经被移动到新的位置。它们之间的区别如下:

  1. 301 Moved Permanently(永久重定向):
  • 当服务器返回301状态码时,它表示请求的资源已经永久移动到了一个新的位置。
  • 客户端在收到301响应后,应该更新其链接指向新的URL,并将以后的请求发送到新的URL。
  • 搜索引擎会更新它们的索引,将旧的URL替换为新的URL。
  • 使用301重定向时,浏览器会自动将用户重定向到新的URL,用户可能会察觉到网页地址的变化。
  1. 302 Found(临时重定向):
  • 当服务器返回302状态码时,它表示请求的资源暂时移动到了一个新的位置。
  • 客户端在收到302响应后,应该继续使用原始的URL发送请求。
  • 搜索引擎会继续将索引指向原始的URL,而不是新的URL。
  • 使用302重定向时,浏览器会自动将用户重定向到新的URL,用户可能不会察觉到网页地址的变化。

总结:

  • 301表示永久重定向,要求客户端更新书签和链接,搜索引擎将索引指向新的URL。
  • 302表示临时重定向,客户端应该继续使用原始URL发送请求,搜索引擎继续索引原始URL。
  • 在实际使用中,301常用于网站结构调整或更改域名等情况,而302常用于临时重定向,例如网站维护或临时转移资源。
  • 若不确定应该使用301还是302时,可以考虑使用302,因为它不会对搜索引擎的索引产生永久性影响。

401与403的区别

401 Unauthorized(未授权)和403 Forbidden(禁止访问)是HTTP协议中的客户端错误状态码,用于指示客户端请求的资源的访问权限问题。它们之间的区别如下:

  1. 401 Unauthorized(未授权):
  • 当服务器返回401状态码时,表示客户端请求需要进行身份验证才能访问资源。
  • 这个状态码要求客户端提供有效的身份验证凭据(例如用户名和密码)以便服务器验证其身份。
  • 通常,在收到401响应后,客户端会弹出身份验证对话框,要求用户提供凭据以重新发送请求。
  1. 403 Forbidden(禁止访问):
  • 当服务器返回403状态码时,表示客户端被服务器禁止访问请求的资源。
  • 这个状态码表明客户端没有足够的权限或认证来访问资源。
  • 403状态码可以在以下情况下出现:
  • 客户端提供的身份验证凭据无效或缺失。
  • 客户端的身份验证凭据有效,但没有足够的权限来访问特定资源。
  • 服务器设置了访问控制列表(ACL)或其他访问限制规则,拒绝客户端访问资源。

总结:

  • 401表示未授权,要求客户端进行身份验证,用于需要身份验证的资源。
  • 403表示禁止访问,客户端被服务器拒绝访问请求的资源,通常是由于缺乏权限、身份验证问题或服务器的访问限制。

在实际应用中,服务器可以根据具体的需求和场景来返回适当的状态码,以便客户端能够理解并采取相应的操作。401状态码通常用于需要身份验证的资源,而403状态码用于明确拒绝访问的情况。