http协议状态码详解和用法完整版
开发中常常遇到状态码,遇到了又被忘记而且翻阅资料。今天在此整理编辑这些状态码含义和用法。
状态码含义
HTTP状态码(HTTP Status Code)是当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
下面是常见的和开发常遇到的HTTP状态码:
200 - 请求成功
301 - 永久移动
400 - 错误请求
404 - 未找到
415 - 不支持的媒体类型
500 - 服务器内部错误
1**信息,服务器收到请求,需要请求者继续执行操作
100 Continue(继续) 客户端应继续其请求
101 Switching Protocols(切换协议) 服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
2**成功,操作被成功接收并处理
200 OK(请求成功) 一般用于GET与POST请求
201 Created(已创建) 成功请求并创建了新的资源
202 Accepted(已接受) 已经接受请求,但未处理完成
203 Non-Authoritative Information(非授权信息) 请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204 No Content(无内容) 服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205 Reset Content(重置内容) 服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206 Partial Content(部分内容) 服务器成功处理了部分GET请求
3**重定向,需要进一步的操作以完成请求
300 Multiple Choices(多种选择) 请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择
301 Moved Permanently(永久移动) 请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302 Found(临时移动) 与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303 See Other(查看其它地址) 与301类似。使用GET和POST请求查看
304 Not Modified(未修改) 所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305 Use Proxy(使用代理) 所请求的资源必须通过代理访问
306 Unused已经被废弃的HTTP状态码
307 Temporary Redirect(临时重定向) 与302类似。使用GET请求重定向
4**客户端错误,请求包含语法错误或无法完成请求
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类似,但请求者应当使用代理进行授权
408 Request Time-out(请求超时) 服务器等待客户端发送的请求时间过长,超时
409 Conflict(冲突) 服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突
410 Gone(已删除) 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
411 Length Required(需要有效长度) 服务器无法处理客户端发送的不带Content-Length的请求信息
412 Precondition Failed(未满足前提条件) 客户端请求信息的先决条件错误
413 Request Entity Too Large(请求实体过大) 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
414 Request-URI Too Large(请求的 URI 过长) 请求的URI过长(URI通常为网址),服务器无法处理
415 Unsupported Media Type(不支持的媒体类型) 服务器无法处理请求附带的媒体格式
416 Requested range not satisfiable(请求范围不符合要求) 客户端请求的范围无效
417 Expectation Failed(未满足期望值) 服务器无法满足Expect的请求头信息
5**服务器错误,服务器在处理请求的过程中发生了错误
500 Internal Server Error(服务器内部错误) 服务器内部错误,无法完成请求
501 Not Implemented(尚未支持) 服务器不支持请求的功能,无法完成请求
502 Bad Gateway(错误网关) 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求
503 Service Unavailable(服务不可用) 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504 Gateway Time-out(网关超时) 充当网关或代理的服务器,未及时从远端服务器获取请求
505 HTTP Version not supported(HTTP 版本不受支持) 服务器不支持请求的HTTP协议的版本,无法完成处理
php发送状态码
php发送状态码函数
/**
* 定义Http协议状态码
* HTTP Protocol defined status codes
* @param int $code
*/
function send_http_status($code) {
$_status = array(
// Informational 1**
100 => 'Continue',
101 => 'Switching Protocols',
// Success 2**
200 => 'OK',
201 => 'Created',
202 => 'Accepted',
203 => 'Non-Authoritative Information',
204 => 'No Content',
205 => 'Reset Content',
206 => 'Partial Content',
// Redirection 3**
300 => 'Multiple Choices',
301 => 'Moved Permanently',
302 => 'Found', // 1.1
303 => 'See Other',
304 => 'Not Modified',
305 => 'Use Proxy',
// 306 is deprecated but reserved
307 => 'Temporary Redirect',
// Client Error 4**
400 => 'Bad Request',
401 => 'Unauthorized',
402 => 'Payment Required',
403 => 'Forbidden',
404 => 'Not Found',
405 => 'Method Not Allowed',
406 => 'Not Acceptable',
407 => 'Proxy Authentication Required',
408 => 'Request Timeout',
409 => 'Conflict',
410 => 'Gone',
411 => 'Length Required',
412 => 'Precondition Failed',
413 => 'Request Entity Too Large',
414 => 'Request-URI Too Long',
415 => 'Unsupported Media Type',
416 => 'Requested Range Not Satisfiable',
417 => 'Expectation Failed',
// Server Error 5**
500 => 'Internal Server Error',
501 => 'Not Implemented',
502 => 'Bad Gateway',
503 => 'Service Unavailable',
504 => 'Gateway Timeout',
505 => 'HTTP Version Not Supported',
509 => 'Bandwidth Limit Exceeded'
);
if(isset($_status[$code])) {
header('HTTP/1.1 '.$code.' '.$_status[$code]);
}
}如何使用
//发送404 send_http_status(404); //发送500 send_http_status(500);
如下图返回:404 Not Found

java发送状态码
java使用HttpServletResponse发送状态码
来看下java的HttpServletResponse接口源代码片段
public interface HttpServletResponse extends ServletResponse {
int SC_CONTINUE = 100;
int SC_SWITCHING_PROTOCOLS = 101;
int SC_OK = 200;
int SC_CREATED = 201;
int SC_ACCEPTED = 202;
int SC_NON_AUTHORITATIVE_INFORMATION = 203;
int SC_NO_CONTENT = 204;
int SC_RESET_CONTENT = 205;
int SC_PARTIAL_CONTENT = 206;
int SC_MULTIPLE_CHOICES = 300;
int SC_MOVED_PERMANENTLY = 301;
int SC_MOVED_TEMPORARILY = 302;
int SC_FOUND = 302;
int SC_SEE_OTHER = 303;
int SC_NOT_MODIFIED = 304;
int SC_USE_PROXY = 305;
int SC_TEMPORARY_REDIRECT = 307;
int SC_BAD_REQUEST = 400;
int SC_UNAUTHORIZED = 401;
int SC_PAYMENT_REQUIRED = 402;
int SC_FORBIDDEN = 403;
int SC_NOT_FOUND = 404;
int SC_METHOD_NOT_ALLOWED = 405;
int SC_NOT_ACCEPTABLE = 406;
int SC_PROXY_AUTHENTICATION_REQUIRED = 407;
int SC_REQUEST_TIMEOUT = 408;
int SC_CONFLICT = 409;
int SC_GONE = 410;
int SC_LENGTH_REQUIRED = 411;
int SC_PRECONDITION_FAILED = 412;
int SC_REQUEST_ENTITY_TOO_LARGE = 413;
int SC_REQUEST_URI_TOO_LONG = 414;
int SC_UNSUPPORTED_MEDIA_TYPE = 415;
int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
int SC_EXPECTATION_FAILED = 417;
int SC_INTERNAL_SERVER_ERROR = 500;
int SC_NOT_IMPLEMENTED = 501;
int SC_BAD_GATEWAY = 502;
int SC_SERVICE_UNAVAILABLE = 503;
int SC_GATEWAY_TIMEOUT = 504;
int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
....
void sendError(int var1, String var2) throws IOException;
void sendError(int var1) throws IOException;
....
}如何使用
//发送404(推荐) response.sendError(HttpServletResponse.SC_NOT_FOUND); //或者 - 发送404 response.sendError(404); //或者 - 自定义显示错误 response.sendError(404,"自定义错误 - Not Found");
可以使用HttpServletResponse.SC_NOT_FOUND来获取404 code。如图输入也一样。

默认输出:HTTP Status 404 -

使用第二个参数可以在默认404页面输出自定义错误,如图:HTTP Status 404 - 自定义错误 - Not Found

已下载:134 次
原创文章,转载请注明出处:https://www.weizhixi.com/article/25.html
