当前位置: 首页 > 后端技术 > PHP

HTTP状态码_0

时间:2023-03-30 00:59:06 PHP

状态码状态码是告诉客户端发生了什么。状态代码为客户提供了一种方便的方式来了解交易的结果。状态代码位于响应的起始行。例如HTTP/1.0200OK这一行,状态码为200。当客户端向HTTP服务器发送请求报文时,会遇到很多意想不到的情况,请求可能不会成功。结束。服务器可能会告诉您找不到所请求的资源,您没有访问该资源的权限,或者该资源已移至其他地方。状态代码在每个响应消息的起始行中返回。将返回数字状态和可读状态。数字代码使程序更容易处理错误,原因短语使人们更容易理解原因短语。原因短语是响应开始行中的最后一个组件。它提供状态代码的文本解释。例如,在HTTP/1.0200OK行中,OK是原因短语。原因短语和状态代码是成对的。原因短语是应用程序开发人员向用户传达的状态代码的人类可读版本,用于解释请求之间发生的情况。HTTP规范没有对原因短语应该以什么形式出现的任何硬性规定。问题,尽量提供简明准确的答案。如果大家在PHP面试中遇到问题,欢迎提Issues交流。包括网络协议、数据结构与算法、PHP、Web、MySQL、Redis、Linux、安全、设计模式、架构、自我介绍、离职原因、职业规划、准备题等,如果觉得不错欢迎star关注,持续更新中~~状态码分类五大类不同的状态码可以按三位码进行分类,状态码200~299表示成功,300~399表示资源已获取去掉了,状态码在400到499之间的代码表示客户端的请求是错误的。500到599之间的代码表示服务器错误。状态代码的总体范围已经定义。范围分类为1XX100~199100~101信息提示2XX200~299200~206成功3XX300~399300~305重定向4XX400~499400~415客户端错误5XX500~599500~505服务器错误当前版本的HTTP只为每种类型定义了一些代码状态。随着协议的演进,更多的状态码将在HTTP规范中正式定义。如果您收到一个您不认识的状态代码,可能有人将其定义为对当前协议的扩展。根据其范围Error,它可以被视为该类的普通成员,这是5XX消息的通用类别100~199,信息状态代码HTTP/1.1在协议中引入了信息状态代码。这些状态代码相对较新,关于它们的复杂性和感知价值存在一些争论,而受限制的状态代码原因短语含义100Continue表示已收到请求的初始部分,并要求客户端继续。发送此状态码后,服务器收到请求后必须响应101SwitchingProtocols,表示服务器正在根据客户端的规范将协议切换到Update头中列出的协议。100Continue状态码的目的是优化这种情况:一个HTTP客户端应用程序有一个实体的主体要发送给服务器,但想在发送之前看看服务器是否会接受该实体。客户端应用程序应该只使用100Continue200~299,成功状态代码当客户端发起请求时,这些请求通常是成功的。服务器有一组状态码用来表示成功,对应不同类型的请求状态码原因短语含义200OK请求成功,实体主体部分包含请求的资源201Created用于创建服务器对象请求(例如:PUT)。响应的实体主体部分应包含引用已创建资源的URL,而Location标头包含最具体的引擎。服务器必须在发送此状态码之前创建一个对象202Accepted请求已被接受,服务器尚未对其执行任何操作。不能保证服务器会完成请求;当被接受时,它似乎是有效的。服务器应在实体主体中包含对请求状态的描述,或附加请求的预估处理时间,以及信息获取指针。203Non-AuthoritativeInformation实体标头中包含的信息不是来自源服务器,而是来自资源的副本。如果中间节点上有副本,但元数据无法或未验证,则会发生这种情况。204NoContent响应消息包含几个标题和一个状态行,但没有实体主体。它主要用于在浏览器没有切换到显示新文档时更新浏览器(例如刷新表单页面)。205ResetContent是另一个主要用于浏览器的代码。负责告诉浏览器清除当前页面中的所有HTML表单元素。206PartialContent成功执行了部分或Range(范围)请求。客户端可以使用一些特殊的头部来获取一些或范围300~399的文件。重定向状态码重定向状态码要么告诉客户端使用一个替代的位置来访问他们感兴趣的资源,要么提供一个替代的响应代替资源的内容。如果资源已被移动,则可以发送重定向状态代码和可选的Location标头以通知客户端资源已被移动以及现在可以在何处找到它。这样浏览器就可以透明的切换到新的位置,不会打扰到用户请求消息GET/index.phpHTTP/1.1Host:blog.maplemark.cnAccept:*ResponsemessageHTTP/1.1301MovedPermanentlyServer:nginx/1.12.2Date:2019年4月19日星期五03:58:59GMTContent-Type:text/html;charset=UTF-8X-Powered-By:PHP/7.2.16Location:https://blog.maplemark.cn/requestmessageGET/HTTP/1.1Host:blog.maplemark.cnAccept:*responsemessageHTTP/1.1200OKServer:nginx/1.12.2日期:2019年4月19日星期五03:59:34GMTContent-Type:文本/html;charset=UTF-8Transfer-Encoding:chunkedConnection:keep-alive...状态码ReasonPhraseMeaning300MultipleChoices当客户端请求一个实际指向多个资源的URL时,会返回这个状态码,比如有一个HTML文档有多种语言版本。将返回一个选项列表,用户可以选择所需的选项以使用301Moved在请求的URL已被删除时永久使用。响应的Location标头应包含资源当前所在的URL。302Found类似于301状态码;但是,客户端应该使用Location标头中给出的URL来临时定位资源。以后的请求应该仍然使用旧的URL303SeeOther来通知客户端应该使用另一个URL来获取资源。新URL位于响应的Location标头中。它的主要目的是允许POST请求的响应将客户端定向到资源。304NotModified客户端可以通过包含的请求标头使其请求有条件。如果用户发起有条件的GET请求,并且资源最近没有被修改,可以用这个状态码来表示。具有此状态代码的响应不应包含实体主体。305UseProxy用于表示必须使用代理来访问资源;代理的位置由Location标头给出。客户端相对于特定资源解析此响应,不能假设所有请求,甚至所有对持有所请求资源的服务器的请求都经过此代理。如果客户端错误地允许代理干预某个请求,可能会造成破坏性行为,导致安全漏洞306(unused)当前未使用307TemporaryRedirect类似于301状态码;但是客户端应该使用Location头给给定的URL来临时定位资源。未来的请求应该使用旧的URL。302、303和307状态代码之间存在一些交叉。这些状态码的用法存在细微差别,其中大部分源于HTTP/1.0和HTTP/1.1应用程序处理这些状态码的方式不同。一些状态码(比如302状态码)是为兼容HTTP/1.0而保留的)400~499,客户端错误状态码有时客户端会发送一些服务器无法处理的东西,比如格式错误的请求消息,或者最常见的,请求一个不存在的URL。许多客户端错误是由浏览器引起的,处理器会处理它,甚至不会打扰你。只有少数错误,例如404,仍然会通过浏览器传给用户。状态码原因短语表示400BadRequest用于通知客户端发送了错误的请求。401Unauthorized与相应的标头一起返回。终端在获得对资源的访问权限之前对自身进行身份验证。402PaymentRequired此状态码尚未使用,但已保留以供将来使用。403Forbidden用于表示请求被服务器拒绝。如果服务器想要解释请求被拒绝的原因,它可以包含描述原因的实体正文。但是这个状态码通常在服务器不想解释拒绝原因的情况下使用。404NotFound用于表示服务器找不到请求的URL。通常包含一个实体,以便客户端应用程序在向用户显示由405MethodNotAllowed发起的请求时使用此状态代码,请求的URL不支持该方法。Allow标头应包含在响应中,以通知客户端哪些方法可用于请求的资源。406NotAcceptable客户端可以指定参数来描述他们愿意接收什么类型的实体。当服务器没有与客户端可接受的URL匹配的资源时使用此代码。通常,服务器会包含一些标头,以便客户端找出无法满足请求的原因。407ProxyAuthenticationRequired类似于401状态码,但用于需要对资源进行身份验证的代理服务器。408RequestTimeout如果客户端完成请求的时间过长,服务器可以发回这个状态码并关闭连接。超时长度因服务器而异,但通常足以满足所有合法请求。409Conflict用于表示请求可能在资源上造成一些冲突。当服务器担心请求会引起冲突时,可以发送这个状态码。响应应该包含描述冲突的正文。410Gone与404类似,只是服务器曾经拥有该资源。主要用于网站的维护,以便服务器管理器在资源被移除时通知客户端。411LengthRequired服务器要求在请求消息中包含Content-Length头,客户端使用412PreconditionFailed发起条件。请求,其中一个条件不成立。当客户端包含Expect头时,是条件请求413RequestEntityTooLarge当客户端发送的实体主体大于服务器能够或想要处理的时候,使用这个状态码414RequestURITooLong中的请求客户端发送的请求当URL长于服务器可以或想要处理的长度时,使用此状态代码415UnsupportedMediaType。当服务器无法理解或无法支持客户端发送的实体的内容类型时,使用这个状态码416RequestedRangeNotSatisfiable。请求消息请求的是什么当指定了一个资源范围,而这个范围无效或者不可满足时,使用这个状态码417ExpectationFailed。请求的Expect请求头包含一个期望,但是当服务器不能满足这个期望时使用这个状态码。如果代理或其他中间应用程序有确凿证据表明源服务器会对某个请求产生一个失败的期望,它可以发送这个响应状态码500~599,服务器错误状态码有时客户端发送一个有效的请求,而服务器本身但是出了点问题。可能是客户端在服务器中遇到了错误,或者服务器上的某个子元素(例如网关资源)出错了,这通常发生在代理试图代表客户端与服务器通信时。代理将发出5XX服务器错误状态代码来描述遇到的问题。状态代码原因短语表示500InternalServerError。服务器遇到阻止它为请求提供服务的错误。使用此状态代码。501NotImplemented客户端发起的请求超出服务器使用此状态码的服务器502BadGateway作为代理或网关从请求-响应链中的下一个链接收到伪造的响应(例如,它无法连接到它的父网关),状态代码503ServiceUnavailable用于指示服务器现在无法为请求提供服务,但将来可以。如果服务器知道资源何时可用,它可以在响应中包含RetryAfter标头。504GatewayTimeout类似于状态码408,只是这里的响应来自网关或代理,它正在等待另一台服务器响应它的请求。Timedout505HTTPVersionNotSupported当服务器接收到使用它不能或不想支持的协议版本的请求时,将使用此状态代码。一些服务器应用程序选择不支持早期版本的协议《HTTP状态码》