作者:YuMing16857 链接:https://juejin.cn/post/6844903940832641037 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • GET: 请求指定的页面信息,并返回实体主体。
  • HEAD: 只请求页面的首部。
  • POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
  • PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
  • DELETE: 请求服务器删除指定的页面。
  • OPTIONS: 允许客户端查看服务器的性能。
  • TRACE: 请求服务器在响应中的实体主体部分返回所得到的内容。
  • PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。
  • MOVE: 请求服务器将指定的页面移至另一个网络地址。
  • COPY: 请求服务器将指定的页面拷贝至另一个网络地址。
  • LINK: 请求服务器建立链接关系。
  • UNLINK: 断开链接关系。
  • WRAPPED: 允许客户端发送经过封装的请求。
  • Extension-mothed:在不改动协议的前提下,可增加另外的方法。

官方定义
HEAD方法跟GET方法相同,只不过服务器响应时不会返回消息体。一个HEAD请求的响应中,HTTP头中包含的元信息应该和一个GET请求的响应消息相同。这种方法可以用来获取请求中隐含的元信息,而不用传输实体本身。也经常用来测试超链接的有效性、可用性和最近的修改。
一个HEAD请求的响应可被缓存,也就是说,响应中的信息可能用来更新之前缓存的实体。如果当前实体跟缓存实体的阈值不同(可通过Content-Length、Content-MD5、ETag或Last-Modified的变化来表明),那么这个缓存就被视为过期了。

简而言之
HEAD请求常常被忽略,但是能提供很多有用的信息,特别是在有限的速度和带宽下。主要有以下特点:
1、只请求资源的首部;
2、检查超链接的有效性;
3、检查网页是否被修改;
4、多用于自动搜索机器人获取网页的标志信息,获取rss种子信息,或者传递安全认证信息等
HEAD方法:它与GET方法几乎是一样的,对于HEAD请求的回应部分来说,它的HTTP头部中包含的信息与通过GET请求所得到的信息是相同的。利用这个方法,不必传输整个资源内容,就可以得到Request-URI所标识的资源的信息。该方法常用于测试超链接的有效性,是否可以访问,以及最近是否更新。
错误码:
1xx:指示信息—表示请求已接收,继续处理。
2xx:成功—表示请求已被成功接收、理解、接受。
3xx:重定向—要完成请求必须进行更进一步的操作。
4xx:客户端错误—请求有语法错误或请求无法实现。
5xx:服务器端错误—服务器未能实现合法的请求。
常见状态代码、状态描述的说明如下。
200 OK:客户端请求成功。
400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
403 Forbidden:服务器收到请求,但是拒绝提供服务。
404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
500 Internal Server Error:服务器发生不可预期的错误。
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)。

状态码 类别 原因短语
1xx international(信息性状态码) 100 正在接收处理请求
101
104
2xx success(成功状态码) 200 请求正常处理完毕
3xx redirect(重定向状态码) 301 需要进行附加操作以完成请求
302
4xx Client error(客户端错误状态码) 404 服务端无法处理请求
405
5xx Server error(服务端错误状态码) 502 服务端处理轻请求出错
504

100系列状态码

  • 100:到目前为止一切正常,应该继续请求,如果以完成请求则忽略
  • 101:表示服务器应客户端升级协议的请求(Upgrade请求头)正在进行协议切换

200系列状态码

  • 200:表示请求成功。默认情况下200响应可以被缓存
  • 204 No Content:表示目前请求成功,但客户端不需要更新其现有页面。使用惯例是,在 PUT 请求中进行资源更新,但是不需要改变当前展示给用户的页面,那么返回 204 No Content。如果新创建了资源,那么返回 201 Created 。如果页面需要更新以反映更新后的资源,那么需要返回 200 。

300系列状态码

  • 301: Moved Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的

  • 302:Found 请求的资源现在临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。

301是永久重定向,而302是临时重定向。

400系列状态码

  • 400 Bad Request 表示由于语法无效,服务器无法理解该请求。客户端不应该在未经修改的情况下重复此请求。
  • 401 Unauthorized 说明由于缺乏目标资源要求的身份验证凭证,发送的请求未得到满足。
  • 403 Forbidden 指的是服务器端有能力处理该请求,但是拒绝授权访问。进入该状态后,不能再继续进行验证。该访问是永久禁止的,并且与应用逻辑密切相关(例如不正确的密码)
  • 404 404 Not Found 说明服务器端无法找到所请求的资源。返回该响应的链接通常称为坏链(broken link)或死链(dead link),它们会导向链接出错处理

404 不能说明请求的资源是临时还是永久丢失。如果服务器知道该资源是永久丢失,那么应该返回 410 (Gone) 而不是 404 。

  • 405 Method Not Allowed 表明服务器禁止了使用当前 HTTP 方法的请求。需要注意的是,GET 与 HEAD 两个方法不得被禁止,当然也不得返回状态码 405。

500系列状态码

500的错误通常是由于服务器上代码出错或者是抛出了异常。

  • 500 Internal Server Eroor
  • 502即 Bad Gateway网关(这里的网关是指CGI,即通用网关接口)错误,通常是程序空指针错误。
  • 503 Server Unavailable
  • 504即 Gateway timeout,表示网关或者代理的服务器无法在规定的时间内获得想要的响应,即超时错误

常见问题

401和403 的区别

301和302有什么区别

500和503 分别表示什么,以及哪些情况下会用到。

504和500有什么区别