http状态码

45次阅读

共计 2291 个字符,预计需要花费 6 分钟才能阅读完成。

总览

http 状态码是浏览器发出 http 请求之后,服务器返回 http 响应中位于 header 中的一个字段。
是一个三位的十进制数字,第一位从 1 到 5,将 http 状态码划分为五类。

  • 1XX:信息,服务器收到请求,需要请求者继续执行操作。
  • 2XX:成功,操作被成功接收并处理。
  • 3XX:重定向,需要进一步的操作以完成请求。
  • 4XX:客户端错误,请求包含语法错误或无法完成请求。
  • 5XX:服务器错误,服务器在处理请求的过程中发生了错误。

1XX 信息

状态码 状态码英文名称 中文描述
100Continue 继续。客户端应继续其请求
101Switching Protocols 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到 HTTP 的新版本协议

2XX 成功

状态码 状态码英文名称 中文描述
200OK 请求成功。一般用于 GET 与 POST 请求
201Created 已创建。成功请求并创建了新的资源
202Accepted 已接受。已经接受请求,但未处理完成
203Non-Authoritative Information 非授权信息。请求成功。但返回的 meta 信息不在原始的服务器,而是一个副本
204No Content 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205Reset Content 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206Partial Content 部分内容。服务器成功处理了部分 GET 请求

3XX 重定向

状态码 状态码英文名称 中文描述
300Multiple Choices 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端
301Moved Permanently 永久移动。请求的资源已被永久的移动到新 URI,返回信息会包括新的 URI,浏览器会自动定向到新 URI。今后任何新的请求都应使用新的 URI 代替
302Found 临时移动。与 301 类似。但资源只是临时被移动。客户端应继续使用原有 URI
302See Other 查看其它地址。与 301 类似。使用 GET 和 POST 请求查看
304Not Modified 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305Use Proxy 使用代理。所请求的资源必须通过代理访问
306Unused 已经被废弃的 HTTP 状态码
307Temporary Redirect 临时重定向。与 302 类似。使用 GET 请求重定向

4XX 客户端错误

状态码 状态码英文名称 中文描述
400Bad Request 客户端请求的语法错误,服务器无法理解
401Unauthorized 请求要求用户的身份认证
402Payment Required 保留,将来使用
403Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求
404Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置 ” 您所请求的资源无法找到 ” 的个性页面
405Method Not Allowed 客户端请求中的方法被禁止
406Not Acceptable 服务器无法根据客户端请求的内容特性完成请求
407Proxy Authentication Required 请求要求代理的身份认证,与 401 类似,但请求者应当使用代理进行授权
408Request Time-out 服务器等待客户端发送的请求时间过长,超时
409Conflict 服务器完成客户端的 PUT 请求时可能返回此代码,服务器处理请求时发生了冲突
410Gone 客户端请求的资源已经不存在。410 不同于 404,如果资源以前有现在被永久删除了可使用 410 代码,网站设计人员可通过 301 代码指定资源的新位置
411Length Required 服务器无法处理客户端发送的不带 Content-Length 的请求信息
412Precondition Failed 客户端请求信息的先决条件错误
413Request Entity Too Large 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个 Retry-After 的响应信息
414Request-URI Too Large 请求的 URI 过长(URI 通常为网址),服务器无法处理
415Unsupported Media Type 服务器无法处理请求附带的媒体格式
416Requested range not satisfiable 客户端请求的范围无效
417Expectation Failed 服务器无法满足 Expect 的请求头信息

5XX 服务器错误

状态码 状态码英文名称 中文描述
500Internal Server Error 服务器内部错误,无法完成请求
501Not Implemented 服务器不支持请求的功能,无法完成请求
502Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503Service Unavailable 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的 Retry-After 头信息中
504Gateway Time-out 充当网关或代理的服务器,未及时从远端服务器获取请求
505HTTP Version not supported 服务器不支持请求的 HTTP 协议的版本,无法完成处理

以上内容节选自 https://www.runoob.com/http/h…

正文完
 0

HTTP状态码

45次阅读

共计 184 个字符,预计需要花费 1 分钟才能阅读完成。

状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。

常用状态码

常用的状态码一般有 14 种:

2xx 成功

3xx 重定向

3XX 响应结果表明浏览器需要执行某些特殊的处理以正确处理
请求。

4xx 客户端错误

4XX 的响应结果表明客户端是发生错误的原因所在

5xx 服务端错误

5XX 的响应结果表明服务器本身发生错误。

正文完
 0

HTTP状态码

45次阅读

共计 5260 个字符,预计需要花费 14 分钟才能阅读完成。

状态码

状态码是来告诉客户端,发生了什么事情。状态码为客户端提供了一种 理解事务处理结果 便捷方式。状态码位于响应的起始行中

比如,在行 HTTP/1.0 200 OK 中,状态码就是 200

客户端向一个 HTTP 服务器发送请求报文时,会遇到很多意想不到的情况,请求不一定能够成功完成。服务器可能会告诉你无法找到所请求的资源,你没有访问资源的权限,或者资源被移到了其他地方

状态码是在每条响应报文的起始行中返回的。会返回一个数字状态和一个可读的状态。数字码 便于程序进行差错处理,而 原因短语 则便于人们理解

原因短语

原因短语是响应起始行中的最后一个组件。它为状态码提供了 文本形式 的解释

比如,在行 HTTP/1.0 200 OK 中,OK 就是原因短语

原因短语和状态码是成对出现的。原因短语是状态码的 可读 版本,应用程序开发者将其传送给用户,用于说明在请求间发生了什么情况。HTTP 规范并没有提供任何硬性规定,要求原因短语以何种形式出现

《PHP 面试问答》https://github.com/colinlet/P…
结合实际 PHP 面试,系统的汇总面试中的各种各样的问题,尝试提供简洁准确的答案。如果你在 PHP 面试中遇到问题,欢迎提 Issues 交流。包含网络协议、数据结构与算法、PHP、Web、MySQL、Redis、Linux、安全、设计模式、架构、自我介绍、离职原因、职业规划、准备问题等部分
如果觉得不错欢迎 star 关注,正在不断持续更新中~~

状态码分类

五大类

可以通过三位数字代码对不同状态码进行分类

  • 200 到 299 之间的状态码表示成功
  • 300 到 399 之间的代码表示资源已经被移走了
  • 400 到 499 之间的代码表示客户端的请求出错了
  • 500 到 599 之间的代码表示服务器出错了
状态码 整体范围 已定义范围 分类
1XX 100~199 100~101 信息提示
2XX 200~299 200~206 成功
3XX 300~399 300~305 重定向
4XX 400~499 400~415 客户端错误
5XX 500~599 500~505 服务器错误

当前的 HTTP 版本只为每类状态定义了几个代码。随着协议的发展,HTTP 规范中会正式地定义更多的状态码。若收到了不认识的状态码,可能是有人将其作为当前协议的 扩展定义 的。可以根据其所处的范围,将它作为那个类别中一个普通的成员来处理

例如,若收到了状态码 515(在 5XX 代码的已定义范围之外),就应该认为这条响应指出了服务器的错误,这是 5XX 报文的通用类别

100 ~ 199,信息状态码

HTTP/1.1 向协议中引入了信息性状态码。这些状态码相对较新,关于其复杂性和感
知价值存在一些争论,而受到限制

状态码 原因短语 含义
100 Continue 说明收到了请求的初始部分,请客户端继续。发送了这个状态码之后,服务器在收到请求之后必须进行响应
101 Switching Protocols 说明服务器正在根据客户端的指定,将协议切换成 Update 首部所列的协议

100 Continue 状态码的目的是对这样的情况进行优化:HTTP 客户端应用程序有一个实体的主体部分要发送给服务器,但希望在发送之前查看一下服务器是否会接受这个实体。客户端应用程序只有在避免向服务器发送一个服务器 无法处理或使用的大实体,才应该使用 100 Continue

200 ~ 299,成功状态码

客户端发起请求时,这些请求通常都是成功的。服务器有一组用来表示成功的状态码,分别对应于不同类型的请求

状态码 原因短语 含义
200 OK 请求没问题,实体的主体部分包含了所请求的资源
201 Created 用于创建服务器对象的请求(比如:PUT)。响应的实体主体部分中应该包含引用了已创建的资源的 URL,Location 首部包含的则是最具体的引擎。服务器必须在发送这个状态码之前创建好对象
202 Accepted 请求已被接受,服务器还未对其执行任何动作。不能保证服务器会完成这个请求;接受请求时,它看起来是有效的。服务器应在实体的主体部分包含对请求状态的描述,或附加请求预计处理时间、信息获取指针
203 Non-Authoritative Information 实体首部包含的信息不是来自于源端服务器,而是来自资源的副本。如果中间节点上有一份副本,但无法或没有对元数据进行验证,就会出现这种情况
204 No Content 响应报文中包含若干首部和一个状态行,但没有实体的主体部分。主要用于在浏览器不转为显示新文档的情况下,对其进行更新(比如刷新一个表单页面)
205 Reset Content 另一个主要用于浏览器的代码。负责告知浏览器清除当前页面中的所有 HTML 表单元素
206 Partial Content 成功执行了一个部分或 Range(范围)请求。客户端可以通过一些特殊的首部来获取部分或某个范围内的文档

300 ~ 399,重定向状态码

重定向状态码要么告知客户端使用替代位置来访问他们所感兴趣的资源,要么就提供一个替代的响应而不是资源的内容。如果资源已被移动,可发送一个重定向状态码和一个可选的 Location 首部来告知客户端资源已被移走,以及现在可以在哪里找到它。这样,浏览器就可以在不打扰使用者的情况下,透明地转入新的位置了

请求报文

GET /index.php HTTP/1.1
Host: blog.maplemark.cn
Accept: *

响应报文

HTTP/1.1 301 Moved Permanently
Server: nginx/1.12.2
Date: Fri, 19 Apr 2019 03:58:59 GMT
Content-Type: text/html; charset=UTF-8
X-Powered-By: PHP/7.2.16
Location: https://blog.maplemark.cn/

请求报文

GET / HTTP/1.1
Host: blog.maplemark.cn
Accept: *

响应报文

HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Fri, 19 Apr 2019 03:59:34 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
...
状态码 原因短语 含义
300 Multiple Choices 客户端请求一个实际指向多个资源的 URL 时会返回这个状态码,比如服务器上有某个 HTML 文档有多个语言版本。返回时会带有一个选项列表,用户可以选择期望使用的那项
301 Moved Permanently 在请求的 URL 已被移除时使用。响应的 Location 首部中应该包含资源现在所处的 URL
302 Found 与 301 状态码类似;但是,客户端应该使用 Location 首部给出的 URL 来临时定位资源。将来的请求仍应使用老的 URL
303 See Other 告知客户端应该用另一个 URL 来获取资源。新的 URL 位于响应报文的 Location 首部。其主要目的是允许 POST 请求的响应将客户端定向到某个资源上去
304 Not Modified 客户端可以通过所包含的请求首部,使其请求变成有条件的。若用户发起了一个条件 GET 请求,而资源近期未被修改,可以通过该状态码表明。带有这个状态码的响应不应该包含实体的主体部分
305 Use Proxy 用来说明必须通过一个代理来访问资源;代理的位置由 Location 首部给出。客户端是相对某个特定资源来解析这条响应的,不能假定所有请求,甚至所有对持有所请求资源的服务器的请求都通过这个代理进行。如果客户端错误地让代理介入了某条请求,可能会引发破坏性的行为,而且会造成安全漏洞
306 (未使用) 当前未使用
307 Temporary Redirect 与 301 状态码类似;但客户端应该使用 Location 首部给出的 URL 来临时定位资源。将来的请求应该使用老的 URL

302、303 和 307 状态码之间存在一些交叉。这些状态码的用法有着细微的差别,大部分差别都源于 HTTP/1.0 和 HTTP/1.1 应用程序对这些状态码 处理方式 的不同,为兼容 HTTP/1.0 而保留了一些状态码(例如 302 状态码)

400 ~ 499,客户端错误状态码

有时客户端会发送一些服务器 无法处理 的东西,比如格式错误的请求报文,或者最常见的是,请求一个不存在的 URL

很多客户端错误都是由浏览器来处理的,甚至不会打扰到你。只有少量错误,比如 404,还是会穿过浏览器来到用户面前

状态码 原因短语 含义
400 Bad Request 用于告知客户端它发送了一个错误的请求
401 Unauthorized 与适当的首部一同返回,在这些首部中请求客户端在获取对资源的访问权之前,对自己进行认证
402 Payment Required 现在这个状态码还未使用,但已经被保留,以作未来之用
403 Forbidden 用于说明请求被服务器拒绝了。如果服务器想说明为什么拒绝请求,可以包含实体的主体部分来对原因进行描述。但这个状态码通常是在服务器不想说明拒绝原因的时候使用的
404 Not Found 用于说明服务器无法找到所请求的 URL。通常会包含一个实体,以便客户端应用程序显示给用户看
405 Method Not Allowed 发起的请求中带有所请求的 URL 不支持的方法时,使用此状态码。应该在响应中包含 Allow 首部,以告知客户端对所请求的资源可以使用哪些方法
406 Not Acceptable 客户端可以指定参数来说明它们愿意接收什么类型的实体。服务器没有与客户端可接受的 URL 相匹配的资源时,使用此代码。通常,服务器会包含一些首部,以便客户端弄清楚为什么请求无法满足
407 Proxy Authentication Required 与 401 状态码类似,但用于要求对资源进行认证的代理服务器
408 Request Timeout 如果客户端完成请求所花的时间太长,服务器可以回送此状态码,并关闭连接。超时时长随服务器的不同有所不同,但通常对所有的合法请求来说,都是够长的
409 Conflict 用于说明请求可能在资源上引发的一些冲突。服务器担心请求会引发冲突时,可以发送此状态码。响应中应该包含描述冲突的主体
410 Gone 与 404 类似,只是服务器曾经拥有过此资源。主要用于 Web 站点的维护,这样服务器的管理者就可以在资源被移除的情况下通知客户端了
411 Length Required 服务器要求在请求报文中包含 Content-Length 首部时使用
412 Precondition Failed 客户端发起了条件请求,且其中一个条件失败了的时候使用。客户端包含了 Expect 首部时发起的就是条件请求
413 Request Entity Too Large 客户端发送的实体主体部分比服务器能够或者希望处理的要大时,使用此状态码
414 Request URI Too Long 客户端所发请求中的请求 URL 比服务器能够或者希望处理的要长时,使用此状态码
415 Unsupported Media Type 服务器无法理解或无法支持客户端所发实体的内容类型时,使用此状态码
416 Requested Range Not Satisfiable 请求报文所请求的是指定资源的某个范围,而此范围无效或无法满足时,使用此状态码
417 Expectation Failed 请求的 Expect 请求首部包含了一个期望,但服务器无法满足此期望时,使用此状态码。如果代理或其他中间应用程序有确切证据说明源端服务器会为某请求产生一个失败的期望,就可以发送这个响应状态码

500 ~ 599,服务器错误状态码

有时客户端发送了一条有效请求,服务器自身却出错了。这可能是客户端碰上了服务器的缺陷,或者服务器上的子元素,比如某个网关资源,出了错

代理尝试着代表客户端与服务器进行交流时,经常会出现问题。代理会发布 5XX 服务器错误状态码来描述所遇到的问题

状态码 原因短语 含义
500 Internal Server Error 服务器遇到一个妨碍它为请求提供服务的错误时,使用此状态码
501 Not Implemented 客户端发起的请求超出服务器的能力范围(比如,使用了服务器不支持的请求方法)时,使用此状态码
502 Bad Gateway 作为代理或网关使用的服务器从请求响应链的下一条链路上收到了一条伪响应(比如,它无法连接到其父网关)时,使用此状态码
503 Service Unavailable 用来说明服务器现在无法为请求提供服务,但将来可以。如果服务器知道什么时候资源会变为可用的,可以在响应中包含一个 RetryAfter 首部
504 Gateway Timeout 与状态码 408 类似,只是这里的响应来自一个网关或代理,它们在等待另一服务器对其请求进行响应时超时了
505 HTTP Version Not Supported 服务器收到的请求使用了它无法或不愿支持的协议版本时,使用此状态码。有些服务器应用程序会选择不支持协议的早期版本

《HTTP 状态码》原文链接:https://blog.maplemark.cn/2019/04/http 状态码.html?utm=sf

正文完
 0

HTTP状态码

46次阅读

共计 2579 个字符,预计需要花费 7 分钟才能阅读完成。

HTTP 状态码是用于表示网页服务器超文本传输协议响应状态的 3 位数字代码。
1xx:信息性状态码 100 Continue 服务器已经接受客户端请求,客户端可以继续发送请求;101 Switchs Protocols 服务器已经理解了客户端的请求,并将通过 Upgrade 消息头通知客户端采用不同的协议来完成这个请求;102 Processing 由 WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。
2xx: 表示请求已成功被服务器接收、理解,并接受 200 OK 服务器已成功处理了请求;201 Cteated 请求成功,并且服务器建立了新的资源;202 Accepted 服务器已接受请求,但尚未处理。请求可能被执行也可能不被执行,其目标是允许服务器接受其他过程的请求;203 Non-Authoritative Information(非授权信息),服务器已成功处理了请求,但返回的信息可能来自本地或者第三方的拷贝;204 No Content 服务器已成功处理了请求,但不需要返回任何实体内容,并且希望返回更新了的元信息;205 Reset Content 服务器已成功处理了请求,且没有返回任何内容。其作用是要求请求者重置文档视图,如表单重置,让用户轻松开始另一次输入;206 Partial Content 服务器已经成功处理了部分 get 请求。类似于迅雷等 HTTP 下载工具,使用此类响应实现断点续传或将一个大文档分解为多个下载段同时下载;207 Multi-Status 由 WebDAV(RFC 2518)扩展的状态码,代表之后的消息体将是一个 XML 消息,并且依照之前子请求数量的不同,包含一系列独立的响应代码。
3xx:表示需要客户端采取进一步的操作才能完成请求。通常,这类状态码被用来重定向 300 Multiple Choice 被请求的资源有一系列可供选择回馈的信息,浏览器能够自行选择一个首选的地址进行重定向;301 Moved Permanently 被请求的资源已永久移动到新位置。服务器返回此 (对 GET 或 HEAD 请求的) 响应时,会自动将请求者转移到新地址;302 Move temporarily 服务器目前从不同的地址响应请求,但客户端以后应当继续向原有的地址发送请求;303 See Other 对应当前请求的响应可以在另一个 URI 上被找到,且客户端应当使用 GET 方式访问那个资源;304 Not Modified 自从上次请求后,请求的资源未被修改过。服务器返回此响应时,不会返回内容;305 Use Proxy 被请求的资源必须通过指定的代理才能访问到;306 Switch Proxy 在最新版本的规范中,306 状态码已不再使用;307 Temporary Redirct 请求的资源临时从不同的 URI 响应请求;需使用 GET/HEAD 请求,否则浏览器禁止自动重定向;
4xx:客户端请求错误 400 Bad Request 语义错误或请求参数错误,当前请求无法被服务器理解;401 Unauthorized 当前请求需要用户身份验证;402 Payment Required 该状态码是为了将来需要而预留的;403 Forbidden 服务器已理解请求,但拒绝执行它;404 Not Found 请求的资源在服务器上未找到;405 Method Not Allowed 禁止使用请求中指定的请求方法;406 Not Acceptable 无法使用请求资源的内容特性,生成响应实体;407 Proxy Authentication Required 类似 401,客户端必须在代理服务器上进行身份验证;代理服务器必须返回一个 Proxy-Authenticate 用以进行身份询问。客户端可以返回一个 Proxy-Authorization 信息头用以验证。408 Request Timeout 请求超时;409 Conflict 服务器处理请求资源时,与当前状态发生冲突。服务器必须在响应中包含有关冲突的信息;410 Gone 被请求的资源在服务器上已永久删除;411 Length Required 服务器拒绝在没有定义 Content-Length 头的情况下接受请求;412 Precondition Failed(未满足前提条件) 服务器未满足请求者在请求的头字段中设置的一个或多个条件;413 Request Entity too Large 请求实体过大,超出服务器处理范围,服务器拒绝处理请求;414 Request URI too Long 请求的 URI 过长,服务器拒绝处理请求;415 Unsupported Media Type 请求中提交的实体不是服务器所支持的类型,服务器拒绝处理请求;416 Requested Range Not Satisfiable 如果无法提供请求范围,服务器则返回此状态码;417 Expectation Failed 服务器未满足请求头 Expect 中指定的预期内容;421 too many connections 从当前客户端所在的 IP 地址到服务器的连接数超过了服务器许可的最大范围;422 Unprocessable Entity 请求格式正确,但是由于含有语义错误,无法响应;423 Locked 当前资源被锁定;424 Failed Dependency 由于之前的某个请求发生的错误,导致当前请求失败;
5xx:表示服务器在处理请求的过程中有错误或异常状态发生 500 Interal Server Error 服务器内部错误,无法完成对请求的处理;501 Not Implemented 服务器不支持当前请求所需要的某个功能,如:服务器无法识别请求的方法;502 Bad Gateway(错误网关) 当服务器作为网关或代理,从上游服务器收到无效响应;503 Service Unavailable 服务器目前不可用(由于维护或过载),此状态是临时的;504 Gateway Timeout(网关超时) 服务器作为网关或代理,未能及时从上游服务器获得响应;505 HTTP Verson Not Supported 服务器不支持在请求中使用的 HTTP 版本协议;506 Variant Also Negotiates 代表服务器存在内部配置错误;507 Insufficient Storage 服务器无法存储完成请求所必须的内容,临时的;509 Bandwidth Limit Exceeded 服务器达到带宽限制(非官方);510 Not Extended 获取资源所需要的策略未被满足。

正文完
 0