PHP: 发送header状态码, HTTP Header Status Codes, http header response code function

直接上代码:

function HTTPStatus($num) 
{
    $http_protocol = "HTTP/1.0"; 
    if(isset($_SERVER['SERVER_PROTOCOL']) && stripos($_SERVER['SERVER_PROTOCOL'],"HTTP") >= 0){
        $http_protocol = $_SERVER['SERVER_PROTOCOL']; 
    }
    $http = array(
        100 => $http_protocol . ' 100 Continue',
        101 => $http_protocol . ' 101 Switching Protocols',
        200 => $http_protocol . ' 200 OK',
        201 => $http_protocol . ' 201 Created',
        202 => $http_protocol . ' 202 Accepted',
        203 => $http_protocol . ' 203 Non-Authoritative Information',
        204 => $http_protocol . ' 204 No Content',
        205 => $http_protocol . ' 205 Reset Content',
        206 => $http_protocol . ' 206 Partial Content',
        300 => $http_protocol . ' 300 Multiple Choices',
        301 => $http_protocol . ' 301 Moved Permanently',
        302 => $http_protocol . ' 302 Found',
        303 => $http_protocol . ' 303 See Other',
        304 => $http_protocol . ' 304 Not Modified',
        305 => $http_protocol . ' 305 Use Proxy',
        307 => $http_protocol . ' 307 Temporary Redirect',
        400 => $http_protocol . ' 400 Bad Request',
        401 => $http_protocol . ' 401 Unauthorized',
        402 => $http_protocol . ' 402 Payment Required',
        403 => $http_protocol . ' 403 Forbidden',
        404 => $http_protocol . ' 404 Not Found',
        405 => $http_protocol . ' 405 Method Not Allowed',
        406 => $http_protocol . ' 406 Not Acceptable',
        407 => $http_protocol . ' 407 Proxy Authentication Required',
        408 => $http_protocol . ' 408 Request Time-out',
        409 => $http_protocol . ' 409 Conflict',
        410 => $http_protocol . ' 410 Gone',
        411 => $http_protocol . ' 411 Length Required',
        412 => $http_protocol . ' 412 Precondition Failed',
        413 => $http_protocol . ' 413 Request Entity Too Large',
        414 => $http_protocol . ' 414 Request-URI Too Large',
        415 => $http_protocol . ' 415 Unsupported Media Type',
        416 => $http_protocol . ' 416 Requested Range Not Satisfiable',
        417 => $http_protocol . ' 417 Expectation Failed',
        500 => $http_protocol . ' 500 Internal Server Error',
        501 => $http_protocol . ' 501 Not Implemented',
        502 => $http_protocol . ' 502 Bad Gateway',
        503 => $http_protocol . ' 503 Service Unavailable',
        504 => $http_protocol . ' 504 Gateway Time-out',
        505 => $http_protocol . ' 505 HTTP Version Not Supported',
    );

    header($http[$num]);

    return
        array(
            'code' => $num,
            'error' => $http[$num],
        );
}
PHP: 发送header状态码, HTTP Header Status Codes, http header response code function
PHP: 发送header状态码, HTTP Header Status Codes, http header response code function

或者直接手写:

// HTTP HEADER STATUS CODES
 
// Use this header instruction to fix 404 headers
// produced by url rewriting...
header('HTTP/1.1 200 OK');
 
// Page was not found:
header('HTTP/1.1 404 Not Found');
 
// Access forbidden:
header('HTTP/1.1 403 Forbidden');
 
// The page moved permanently should be used for
// all redrictions, because search engines know
// what's going on and can easily update their urls.
header('HTTP/1.1 301 Moved Permanently');
 
// Server error
header('HTTP/1.1 500 Internal Server Error');
 
// Redirect to a new location:
header('Location: http://www.example.org/');
 
// Redriect with a delay:
header('Refresh: 10; url=http://www.example.org/');
print 'You will be redirected in 10 seconds';
 
// you can also use the HTML syntax:
// <meta http-equiv="refresh" content="10;http://www.example.org/ />
 
// override X-Powered-By value
header('X-Powered-By: PHP/4.4.0');
header('X-Powered-By: Brain/0.6b');
 
// content language (en = English)
header('Content-language: en');
 
// last modified (good for caching)
$time = time() - 60; // or filemtime($fn), etc
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');
 
// header for telling the browser that the content
// did not get changed
header('HTTP/1.1 304 Not Modified');
 
// set content length (good for caching):
header('Content-Length: 1234');
 
// Headers for an download:
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="example.zip"'); 
header('Content-Transfer-Encoding: binary');
// load the file to send:
readfile('example.zip');
 
// Disable caching of the current document:
header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
header('Pragma: no-cache');
 
// set content type:
header('Content-Type: text/html; charset=iso-8859-1');
header('Content-Type: text/html; charset=utf-8');
header('Content-Type: text/plain'); // plain text file
header('Content-Type: image/jpeg'); // JPG picture
header('Content-Type: application/zip'); // ZIP file
header('Content-Type: application/pdf'); // PDF file
header('Content-Type: audio/mpeg'); // Audio MPEG (MP3,...) file
header('Content-Type: application/x-shockwave-flash'); // Flash animation
 
// show sign in box
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: Basic realm="Top Secret"');
print 'Text that will be displayed if the user hits cancel or ';
print 'enters wrong login data';

 

解释:

成功2XX        成功处理了请求的状态码。
200                   服务器已成功处理了请求并提供了请求的网页。
204                   服务器成功处理了请求,但没有返回任何内容。

重定向3XX      每次请求中使用重定向不要超过 5 次。
301                   请求的网页已永久移动到新位置。当URLs发生变化时,使用301代码。搜索引擎索引中保存新的URL。
302                   请求的网页临时移动到新位置。搜索引擎索引中保存原来的URL。
304                   如果网页自请求者上次请求后没有更新,则用304代码告诉搜索引擎机器人,可节省带宽和开销。

客户端错误4XX  表示请求可能出错,妨碍了服务器的处理。
400                   服务器不理解请求的语法。
403                   服务器拒绝请求。
404                   服务器找不到请求的网页。服务器上不存在的网页经常会返回此代码。
410                   请求的资源永久删除后,服务器返回此响应。该代码与 404(未找到)代码相似,
但在资源以前存在而现在不存在的情况下,有时用来替代404 代码。如果资源已永久删除,应当使用 301 指定资源的新位置。

服务器错误5XX  表示服务器在处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。
500                   服务器遇到错误,无法完成请求。
503                   服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。

详细分解:
2XX  成功
200  正常;请求已完成。
201  正常;紧接 POST 命令。
202  正常;已接受用于处理,但处理尚未完成。
203  正常;部分信息 — 返回的信息只是一部分。
204  正常;无响应 — 已接收请求,但不存在要回送的信息。

3XX  重定向
301  已移动 — 请求的数据具有新的位置且更改是永久的。
302  已找到 — 请求的数据临时具有不同 URI。
303  请参阅其它 — 可在另一 URI 下找到对请求的响应,且应使用 GET 方法检索此响应。
304  未修改 — 未按预期修改文档。
305  使用代理 — 必须通过位置字段中提供的代理来访问请求的资源。
306  未使用 — 不再使用;保留此代码以便将来使用。

4XX  客户机中出现的错误
400  错误请求 — 请求中有语法问题,或不能满足请求。
401  未授权 — 未授权客户机访问数据。
402  需要付款 — 表示计费系统已有效。
403  禁止 — 即使有授权也不需要访问。
404  找不到 — 服务器找不到给定的资源;文档不存在。
407  代理认证请求 — 客户机首先必须使用代理认证自身。
415  介质类型不受支持 — 服务器拒绝服务请求,因为不支持请求实体的格式。

5XX  服务器中出现的错误
500  内部错误 — 因为意外情况,服务器不能完成请求。
501  未执行 — 服务器不支持请求的工具。
502  错误网关 — 服务器接收到来自上游服务器的无效响应。
503  无法获得服务 — 由于临时过载或维护,服务器无法处理请求。
504 Gateway Timeout
作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。
注意:某些代理服务器在DNS查询超时时会返回400或者500错误
505 HTTP Version Not Supported
服务器不支持,或者拒绝支持在请求中使用的 HTTP 版本。这暗示着服务器不能或不愿使用与客户端相同的版本。响应中应当包含一个描述了为何版本不被支持以及服务器支持哪些协议的实体。
506 Variant Also Negotiates
由《透明内容协商协议》(RFC 2295)扩展,代表服务器存在内部配置错误:被请求的协商变元资源被配置为在透明内容协商中使用自己,因此在一个协商处理中不是一个合适的重点。
507 Insufficient Storage
服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。WebDAV (RFC 4918)
508 Loop Detected
服务器发现请求中出现一个无穷循环
509 Bandwidth Limit Exceeded
服务器达到带宽限制。这不是一个官方的状态码,但是仍被广泛使用。
510 Not Extended
获取资源所需要的策略并没有没满足。(RFC 2774)

 

本文:PHP: 发送header状态码, HTTP Header Status Codes, http header response code function