Files

380 lines
24 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
// +----------------------------------------------------------------------
// | YwxApp [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2026-2036 http://ywxapp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: ywxapp<admin@ywxapp.cn>
// +----------------------------------------------------------------------
namespace ywxapp\utils;
/**
* StatusCode 类
*
* @author ywxapp <admin@ywxapp.cn>
*/
class StatusCode
{
/**
* 这个临时响应表明,迄今为止的所有内容都是可行的,客户端应该继续请求,如果已经完成,则忽略它。
*/
const Continue = 100;
/**
* 该代码是响应客户端的 Upgrade 请求头发送的,指明服务器即将切换的协议。
*/
const SwitchingProtocols = 101;
/**
* 此代码表示服务器已收到并正在处理该请求,但当前没有响应可用。
*/
const Processing = 102;
/**
* 此状态代码主要用于与 Link 链接头一起使用,以允许用户代理在服务器准备响应阶段时开始预加载。
*/
const EarlyHints = 103;
/**
* 请求成功。这是最常见的成功响应。
*/
const Success = 200;
/**
* 在 HTTP 协议中,201 Created 是一个代表成功的应答状态码,表示请求已经被成功处理,并且创建了新的资源。
* 新的资源在应答返回之前已经被创建。
* 同时新增的资源会在应答消息体中返回,其地址或者是原始请求的路径,或者是 Location 首部的值。
*/
const Created = 201;
/**
* 响应状态码 202 Accepted 表示服务器端已经收到请求消息,但是尚未进行处理。
* 但是对于请求的处理却是无保证的,即稍后无法通过 HTTP 协议给客户端发送一个异步请求来告知其请求的处理结果。
* 这个状态码被设计用来将请求交由另外一个进程或者服务器来进行处理,或者是对请求进行批处理的情形。
*/
const Accepted = 202;
/**
* 在 HTTP 协议中,响应状态码 203 Non-Authoritative Information 表示请求已经成功被响应,但是获得的负载与源头服务器的状态码为 200 (OK) 的响应相比,经过了拥有转换功能的 proxy(代理服务器)的修改。
* The 203 状态码有点类似于 Warning 首部的 214Transformation Applied)警告码,后者的优势在于可以应用于任何状态码的响应之中。
*/
const NonAuthoritativeInformation = 203;
/**
* HTTP 204 No Content 成功状态响应码,表示该请求已经成功了,但是客户端客户不需要离开当前页面。
* 默认情况下 204 响应是可缓存的。一个 ETag 标头包含在此类响应中。
*/
const NoContent = 204;
/**
* 在 HTTP 协议中,响应状态码 205 Reset Content 用来通知客户端重置文档视图,比如清空表单内容、重置 canvas 状态或者刷新用户界面。
*/
const ResetContent = 205;
/**
* HTTP 206 Partial Content 成功状态响应代码表示请求已成功,并且主体包含所请求的数据区间,该数据区间是在请求的 Range 首部指定的。
* 如果只包含一个数据区间,那么整个响应的 Content-Type 首部的值为所请求的文件的类型,同时包含 Content-Range 首部。
* 如果包含多个数据区间,那么整个响应的 Content-Type 首部的值为 multipart/byteranges ,其中一个片段对应一个数据区间,并提供 Content-Range 和 Content-Type 描述信息。
*/
const PartialContent = 206;
/**
* HTTP 207 Multi-Status 响应状态码表示可能存在多个响应。
* 响应主体是一个带有 multistatus 根元素的 text/xml 或 application/xml HTTP 实体。XML 主体将列出所有单独的响应状态码。
*/
const MultiStatus = 207;
/**
* Already Reported
*/
const AlreadyReported = 208;
/**
* IM Used
*/
const IMUsed = 226;
/**
* 300 Multiple Choices 是一个用来表示重定向的响应状态码,表示该请求拥有多种可能的响应。
* 用户代理或者用户自身应该从中选择一个。由于没有如何进行选择的标准方法,这个状态码极少使用。
*/
const MultipleChoices = 300;
/**
* HTTP 301 Moved Permanently 说明请求的资源已经被移动到了由 Location 头部指定的 url 上,是固定的不会再改变。搜索引擎会根据该响应修正。
*/
const MovedPermanently = 301;
/**
* HTTP 302 Found 重定向状态码表明请求的资源被暂时的移动到了由该 HTTP 响应的响应头 Location 指定的 URL 上。
* 浏览器会重定向到这个 URL,但是搜索引擎不会对该资源的链接进行更新 (In SEO-speak, it is said that the link-juice is not sent to the new URL)。
*/
const Found = 302;
/**
* HTTP 303 See Other 重定向状态码,通常作为 PUT 或 POST 操作的返回结果,它表示重定向链接指向的不是新上传的资源,而是另外一个页面,比如消息确认页面或上传进度页面。而请求重定向页面的方法要总是使用 GET。
*/
const SeeOther = 303;
/**
* HTTP 304 Not Modified 说明无需再次传输请求的内容,也就是说可以使用缓存的内容。
* 这通常是在一些安全的方法(safe),例如GET 或HEAD 或在请求中附带了头部信息: If-None-Match 或If-Modified-Since。
*/
const NotModified = 304;
/**
* HTTP 307 Temporary Redirect,临时重定向响应状态码,表示请求的资源暂时地被移动到了响应的 Location 首部所指向的 URL 上。
* 原始请求中的请求方法和消息主体会在重定向请求中被重用。在确实需要将重定向请求的方法转换为 GET 的场景下,可以考虑使用 303 See Other 状态码。
* 例如,在使用 PUT 方法进行文件上传操作时,如果需要返回一条确认信息(例如“你已经成功上传了 XYZ”),而不是返回上传的资源本身,就可以使用这个状态码。
* 状态码 307 与 302 之间的唯一区别在于,当发送重定向请求的时候,307 状态码可以确保请求方法和消息主体不会发生变化。
* 如果使用 302 响应状态码,一些旧客户端会错误地将请求方法转换为 GET:也就是说,在 Web 中,如果使用了 GET 以外的请求方法,且返回了 302 状态码,则重定向后的请求方法是不可预测的;
* 但如果使用 307 状态码,之后的请求方法就是可预测的。对于 GET 请求来说,两种情况没有区别。
*/
const TemporaryRedirect = 307;
/**
* 在 HTTP 协议中, 308 Permanent Redirect(永久重定向)是表示重定向的响应状态码,说明请求的资源已经被永久的移动到了由 Location 首部指定的 URL 上。
* 浏览器会进行重定向,同时搜索引擎也会更新其链接(用 SEO 的行话来说,意思是“链接汁”(link juice)被传递到了新的 URL)。
*/
const PermanentRedirect = 308;
/**
* 超文本传输协议(HTTP400 Bad Request 响应状态码表示服务器因某些被认为是客户端错误的原因
* (例如,请求语法错误、无效请求消息格式或者欺骗性请求路由),而无法或不会处理该请求。
*/
const BadRequest = 400;
/**
* 状态码 401 Unauthorized 代表客户端错误,指的是由于缺乏目标资源要求的身份验证凭证,发送的请求未得到满足。
*这个状态码会与 WWW-Authenticate 首部一起发送,其中包含有如何进行验证的信息。
*这个状态类似于 403,但是在该情况下,依然可以进行身份验证。
*/
const Unauthorized = 401;
/**
* 402 Payment Required 是一个被保留使用的非标准客户端错误状态响应码。
*
* 有时,这个状态码表明直到客户端付费之后请求才会被处理。
* 402 状态码被创建最初目的是用于数字现金或微型支付系统,表明客户端请求的内容只有付费之后才能获取。
* 目前还不存在标准的使用约定,不同的实体可以在不同的环境下使用。
*/
const PaymentRequired = 402;
/**
* 状态码 403 Forbidden 代表客户端错误,指的是服务器端有能力处理该请求,但是拒绝授权访问。
*
* 这个状态类似于 401,但进入 403状态后即使重新验证也不会改变该状态。
* 该访问是长期禁止的,并且与应用逻辑密切相关(例如没有足够的权限访问该资源)。
*/
const Forbidden = 403;
/**
* HTTP 响应状态码 404 Not Found 指的是服务器无法找到所请求的资源。
* 返回该响应的链接通常称为坏链(broken link)或死链(dead link),它们会导向链接出错处理(link rot)页面。
*
*404 状态码并不能说明请求的资源是临时还是永久丢失。如果服务器知道该资源是永久丢失,那么应该返回 410(Gone)而不是 404。
*/
const NotFound = 404;
/**
* 状态码 405 Method Not Allowed 表明服务器禁止了使用当前 HTTP 方法的请求。
*/
const MethodNotAllowed = 405;
/**
* HTTP 406 Not Acceptable 客户端错误响应状态码表示服务器无法根据请求的主动内容协商标头中定义的可接受值的列表产生匹配的响应,并且服务器不愿意提供默认表示。
*
*主动内容协商标头包括:
* Accept
* Accept-Encoding
* Accept-Language
*
* 实际上,这种错误极少使用。服务器不应使用此错误代码响应,因为它对终端用户来说很难理解和修复,而是忽略相关的标头并向用户提供实际页面。
*假设即使用户不完全满意,他们也会更喜欢这种情况,而不是错误代码。
*
* 如果服务器返回了这个错误状态码,那么消息体中应该包含所能提供的资源表现形式的列表,允许用户手动进行选择。
*/
const NotAcceptable = 406;
/**
* 状态码 407 Proxy Authentication Required 代表客户端错误,指的是由于缺乏位于浏览器与可以访问所请求资源的服务器之间的代理服务器(proxy server )要求的身份验证凭证,发送的请求尚未得到满足。
*
* 这个状态码会与 Proxy-Authenticate 首部一起发送,其中包含有如何进行验证的信息。
*/
const ProxyAuthenticationRequired = 407;
/**
* 响应状态码 408 Request Timeout 表示服务器想要将没有在使用的连接关闭。一些服务器会在空闲连接上发送此信息,即便是在客户端没有发送任何请求的情况下。
*
* 服务器应该在此类响应中将 Connection 首部的值设置为 "close",因为 408 意味着服务器已经决定将连接关闭,而不是继续等待。
*
* 这类响应出现的比较频繁,源于一些浏览器——例如 Chrome, Firefox 27+, 或者 IE9 等——使用 HTTP 协议中的预连接机制来加速上网体验。同时应该注意到,某些服务器会直接关闭连接,而不发送此类消息。
*/
const RequestTimeout = 408;
/**
* 响应状态码 409 Conflict 表示请求与服务器端目标资源的当前状态相冲突。
*
* 冲突最有可能发生在对 PUT 请求的响应中。例如,当上传文件的版本比服务器上已存在的要旧,从而导致版本冲突的时候,那么就有可能收到状态码为 409 的响应。
*/
const Conflict = 409;
/**
* HTTP 410 Gone 说明请求的目标资源在原服务器上不存在了,并且是永久性的丢失。如果不清楚是否为永久或临时的丢失,应该使用404
*/
const Gone = 410;
/**
* 响应状态码 411 Length Required 属于客户端错误,表示由于缺少确定的Content-Length 首部字段,服务器拒绝客户端的请求。
*
*注意,按照规范,当使用分块模式传输数据的时候, Content-Length 首部是不存在的,但是需要在每一个分块的开始添加该分块的长度,用十六进制数字表示。参见 Transfer-Encoding 获取更多细节信息。
*/
const LengthRequired = 411;
/**
* 在 HTTP 协议中,响应状态码 412 Precondition Failed(先决条件失败)表示客户端错误,意味着对于目标资源的访问请求被拒绝。
* 这通常发生于采用除 GET 和 HEAD 之外的方法进行条件请求时,由首部字段 If-Unmodified-Since 或 If-None-Match 规定的先决条件不成立的情况下。
* 这时候,请求的操作——通常是上传或修改文件——无法执行,从而返回该错误状态码。
*/
const PreconditionFailed = 412;
/**
* HTTP 响应状态码 413 Content Too Large 表示请求主体的大小超过了服务器愿意或有能力处理的限度,服务器可能会关闭连接或返回 Retry-After 标头字段。
*/
const ContentTooLarge = 413;
/**
* 响应码 414 URI Too Long 表示客户端所请求的 URI 超过了服务器允许的范围。
*
* 以下是造成这种罕见情况的几种可能原因:
* 当客户端误将 POST 请求当作 GET 请求时,会带有一个较长的查询字符串 (query);
* 当客户端堕入重定向循环黑洞时,例如,指向自身后缀的重定向 URI 前缀 (a redirected URI prefix that points to a suffix of itself)
* 当客户端对服务器进行攻击,试图寻找潜在的漏洞时。
*/
const URITooLong = 414;
/**
* 415 Unsupported Media Type 是一种 HTTP 协议的错误状态代码,表示服务器由于不支持其有效载荷的格式,从而拒绝接受客户端的请求。
*
* 格式问题的出现有可能源于客户端在 Content-Type 或 Content-Encoding 首部中指定的格式,也可能源于直接对负载数据进行检测的结果。
*/
const UnsupportedMediaType = 415;
/**
* HTTP 416 Range Not Satisfiable 错误状态码意味着服务器无法处理所请求的数据区间。
* 最常见的情况是所请求的数据区间不在文件范围之内,也就是说,Range 首部的值,虽然从语法上来说是没问题的,但是从语义上来说却没有意义。
*
*416 响应报文包含一个 Content-Range 首部,提示无法满足的数据区间(用星号 * 表示),后面紧跟着一个“/”,再后面是当前资源的长度。例如:Content-Range: *\/12777
*
*遇到这一错误状态码时,浏览器一般有两种策略:要么终止操作(例如,一项中断的下载操作被认为是不可恢复的),要么再次请求整个文件。
*/
const RangeNotSatisfiable = 416;
/**
* HTTP 协议中的 417 Expectation Failed 状态码表示客户端错误,意味着服务器无法满足 Expect 请求消息头中的期望条件。
*/
const ExpectationFailed = 417;
/**
* HTTP 418 I'm a teapot 客户端错误响应状态码表示服务器拒绝冲泡咖啡,因为它一直都是茶壶。
* 暂时没有咖啡的组合式咖啡/茶壶应该返回 503。这个错误是对 1998 年和 2014 年愚人节玩笑中定义的超文本咖啡壶控制协议的参考。
*
*一些网站使用这个响应来处理它们不想处理的请求,比如自动查询。
*/
//const UnprocessableEntity = 418;
/**
* HTTP 421 Misdirected Request 客户端错误响应状态码表明,请求被定向到一个无法生成响应的服务器。如果连接被重复使用或选择了其他服务,就有可能出现这种情况。
*/
const MisdirectedRequest = 421;
/**
* HTTP 422 Unprocessable Entity 状态码表示服务器理解请求实体的内容类型,并且请求实体的语法是正确的,但是服务器无法处理所包含的指令。
*/
const UnprocessableEntity = 422;
/**
* HTTP 423 Locked 错误响应状态码表示暂定目标资源被锁定,即无法访问。其内容应包含一些 WebDAV XML 格式的信息。
*/
const Locked = 423;
/**
* HTTP 424 Failed Dependency 客户端错误响应代码表明,由于请求的操作依赖于另一个操作,且该操作失败,因此无法在资源上执行该方法。
*
*普通 web 服务器通常不会返回此状态代码。但其他一些协议,如 WebDAV 可以返回该状态代码。
*例如,在 WebDAV 中,如果发出了 PROPPATCH 请求,其中一条命令失败,那么其他命令也会自动以 424 Failed Dependency 的形式失败。
*/
const FailedDependency = 424;
/**
* 状态码 425 Too Early 代表服务器不愿意冒风险来处理该请求,原因是处理该请求可能会被“重放”,从而造成潜在的重放攻击。
*/
const TooEarly = 425;
/**
* 426 Upgrade Required 是一种 HTTP 协议的错误状态代码,表示服务器拒绝处理客户端使用当前协议发送的请求,但是可以接受其使用升级后的协议发送的请求。
*
* 服务器会在响应中使用 Upgrade 首部来指定要求的协议。
*/
const UpgradeRequired = 426;
/**
* 在 HTTP 协议中,响应状态码 428 Precondition Required 表示服务器端要求发送条件请求。
*
* 一般的,这种情况意味着必要的条件首部——如 If-Match——的缺失。
*
* 当一个条件首部的值不能匹配服务器端的状态的时候,应答的状态码应该是 412 Precondition Failed,前置条件验证失败。
*/
const PreconditionRequired = 428;
/**
* 在 HTTP 协议中,响应状态码 429 Too Many Requests 表示在一定的时间内用户发送了太多的请求,即超出了“频次限制”。
*
* 在响应中,可以提供一个 Retry-After 首部来提示用户需要等待多长时间之后再发送新的请求。
*/
const TooManyRequests = 429;
/**
* 响应码 431 Request Header Fields Too Large 表示由于请求中的首部字段的值过大,服务器拒绝接受客户端的请求。客户端可以在缩减首部字段的体积后再次发送请求。
*
* 该响应码可以用于首部总体体积过大的情况,也可以用于单个首部体积过大的情况。
*
* 这种错误不应该出现于经过良好测试的投入使用的系统当中,而是更多出现于测试新系统的时候
*/
const RequestHeaderFieldsTooLarge = 431;
/**
* 451 Unavailable For Legal Reasons(因法律原因不可用)是一种 HTTP 协议的错误状态代码,表示服务器由于法律原因,无法提供客户端请求的资源,例如可能会导致法律诉讼的页面。
*/
const UnavailableForLegalReasons = 451;
/**
* 在 HTTP 协议中,500 Internal Server Error 是表示服务器端错误的响应状态码,意味着所请求的服务器遇到意外的情况并阻止其执行请求。
*
* 这个错误代码是一个通用的“万能”响应代码。有时候,对于类似于 500 这样的错误,服务器管理员会更加详细地记录相关的请求信息来防止以后同样错误的出现。
*/
const InternalServerError = 500;
/**
* HTTP 501 Not Implemented 服务器错误响应码表示请求的方法不被服务器支持,因此无法被处理。服务器必须支持的方法(即不会返回这个状态码的方法)只有 GET 和 HEAD。
*
* 请注意,你无法修复 501 错误,需要被访问的 web 服务器去修复该问题。
*/
const NotImplemented = 501;
/**
* 502 Bad Gateway 是一种 HTTP 协议的服务端错误状态代码,它表示作为网关或代理的服务器,从上游服务器中接收到的响应是无效的。
*
* 备注: 网关在计算机网络体系中可以指代不同的设备,502 错误通常不是客户端能够修复的,而是需要由途经的 Web 服务器或者代理服务器对其进行修复。
*/
const BadGateway = 502;
/**
* 503 Service Unavailable 是一种 HTTP 协议的服务器端错误状态代码,它表示服务器尚未处于可以接受请求的状态。
*
* 通常造成这种情况的原因是由于服务器停机维护或者已超载。
* 注意在发送该响应的时候,应该同时发送一个对用户友好的页面来解释问题发生的原因。
* 该种响应应该用于临时状况下,与之同时,在可行的情况下,应该在 Retry-After 首部字段中包含服务恢复的预期时间。
*
* 缓存相关的首部在与该响应一同发送时应该小心使用,因为 503 状态码通常应用于临时状况下,而此类响应一般不应该进行缓存。
*/
const ServiceUnavailable = 503;
/**
* 504 Gateway Timeout 是一种 HTTP 协议的服务器端错误状态代码,表示扮演网关或者代理的服务器无法在规定的时间内获得想要的响应。
*
* 网关在计算机网络体系中可以指代不同的设备,504 错误通常不是在客户端可以修复的,而是需要由途径的 Web 服务器或者代理服务器对其进行修复。
*/
const GatewayTimeout = 504;
/**
* 505 HTTP Version Not Supported 是一种 HTTP 协议的服务器端错误状态代码,表示服务器不支持请求所使用的 HTTP 版本。
*/
const HTTPVersionNotSupported = 505;
/**
* HTTP 协议的 506 Variant Also Negotiates 响应状态码 可以在 TCN(透明内容协商,见 RF2295)上下文给出。
* TCN 协议允许客户端取回给定资源的最佳变量/变元,这里服务器支持多个变量/变元。
*
* 506 码表示内部服务器配置错误,其中所选变量/变元自身被配置为参与内容协商,因此并不是合适的协商端点。
*/
const VariantAlsoNegotiates = 506;
/**
* HTTP 协议的 507 Insufficient Storage 响应状态码 可以在 WebDAV 协议(基于 web 的分布式创作和版本控制,参见 RFC 4918)中给出。
*
* 507 码表示服务器不能存储相关内容。准确地说,一个方法可能没有被执行,因为服务器不能存储其表达形式,这里的表达形式指:方法所附带的数据,而且其请求必需已经发送成功。
*/
const InsufficientStorage = 507;
/**
* HTTP 协议的 508 Loop Detected 状态码可以在 WebDAV 协议(基于 Web 的分布式创作和版本控制)中给出。
*
* 508 码表示服务器中断一个操作,因为它在处理具有“Depth: infinity”的请求时遇到了一个无限循环。508 码表示整个操作失败。
*/
const LoopDetected = 508;
/**
* HTTP 协议的 510 Not Extended 响应状态码在 HTTP 扩展框架协议(参见 RFC 2774)中发送。
*
* 在 HTTP 扩展框架协议中,一个客户端可以发送一个包含扩展声明的请求,该声明描述了要使用的扩展。如果服务器接收到这样的请求,但是请求不支持任何所描述的扩展,那么服务器将使用 510 状态码进行响应。
*/
const NotExtended = 510;
/**
* HTTP 511 Network Authentication Required 服务端错误响应状态码表示客户端需要进行认证才能获得网络访问权限。此状态不是由源服务器生成的,而是由控制网络访问的代理服务器拦截生成的。
*
* 网络运营商有时会要求用户进行一些身份验证、接受条款或其他互动,才能授予访问权限(例如在网吧或机场)。他们通常使用客户端的媒体访问控制(MAC)地址来识别尚未完成上述操作的用户。
*/
const NetworkAuthenticationRequired = 511;
}