HTTP一些常见状态码

本文详细介绍了HTTP状态码的含义及用途,包括1XX至5XX系列状态码所代表的不同情况,如请求处理中、成功、重定向、客户端错误及服务器错误等。
  • 1XX:
    表示请求正在处理;

  • 2XX:
    表示请求正常处理完毕;

  • 3XX:
    请求重定向,需要进行附加操作以完成请求;

  • 4XX:
    表示客户端请求出错;

  • 5XX:
    表示服务端处理请求出错;

HTTP协议中常见状态码用于表示客户端与服务器之间的通信结果,这些三位数字代码有助于识别请求的成功、失败或需要进一步操作的情况。以下是各类常见状态码及其含义的详细介绍: ### 1xx: 信息响应 这类状态码表示请求已被接收并正在处理。 - **100 Continue**:服务器已收到请求头部,客户端可以继续发送请求主体。 - **101 Switching Protocols**:服务器接受客户端切换协议的请求,例如从HTTP切换到WebSocket[^3]。 ### 2xx: 成功 这类状态码表示请求已被成功处理。 - **200 OK**:最常见状态码,表示请求成功完成,并返回了请求的数据[^1]。 - **201 Created**:请求成功创建了一个新资源,通常在POST请求后返回。 - **204 No Content**:请求成功执行,但没有返回任何内容,常用于DELETE请求[^3]。 ### 3xx: 重定向 这类状态码表示需要进一步的操作以完成请求。 - **301 Moved Permanently**:请求的资源已被永久移动至新的URL,新位置通过Location头字段提供。 - **302 Found**:请求的资源临时位于另一个URI下,客户端应使用新的URI重新发起请求。 - **304 Not Modified**:资源未被修改,客户端可以使用本地缓存的版本[^3]。 ### 4xx: 客户端错误 这类状态码表示客户端可能犯了错误。 - **400 Bad Request**:请求格式有误,服务器无法解析或处理该请求。 - **401 Unauthorized**:请求需要用户认证,通常涉及登录凭据。 - **403 Forbidden**:服务器理解请求,但拒绝执行,因为客户端无权访问目标资源。 - **404 Not Found**:请求的资源不存在于服务器上。 - **429 Too Many Requests**:客户端在短时间内发送了过多请求,服务器暂时无法处理[^3]。 ### 5xx: 服务器错误 这类状态码表示服务器遇到了意外情况,导致无法完成请求。 - **500 Internal Server Error**:服务器内部出现错误,无法处理请求。 - **501 Not Implemented**:服务器不支持请求的方法或功能。 - **502 Bad Gateway**:作为网关或代理的服务器收到了上游服务器的无效响应。 - **503 Service Unavailable**:服务器暂时无法处理请求,通常是因为过载或维护。 - **504 Gateway Timeout**:作为网关或代理的服务器未能及时收到上游服务器的响应。 以下是一个简单的Python示例,演示如何使用`http.server`模块创建一个基本的HTTP服务器,并根据不同的路径返回相应的状态码: ```python from http.server import BaseHTTPRequestHandler, HTTPServer class MyHandler(BaseHTTPRequestHandler): def do_GET(self): if self.path == '/': self.send_response(200) self.send_header('Content-type', 'text/html') self.end_headers() self.wfile.write(b"Hello, world!") elif self.path == '/redirect': self.send_response(301) self.send_header('Location', 'http://example.com') self.end_headers() elif self.path == '/not_found': self.send_response(404) self.send_header('Content-type', 'text/html') self.end_headers() self.wfile.write(b"404 Not Found") else: self.send_response(500) self.send_header('Content-type', 'text/html') self.end_headers() self.wfile.write(b"Internal Server Error") def run(server_class=HTTPServer, handler_class=MyHandler): server_address = ('', 8000) httpd = server_class(server_address, handler_class) print(f'Starting httpd on port {server_address[1]}...') httpd.serve_forever() if __name__ == "__main__": run() ``` 此脚本启动了一个监听8000端口的HTTP服务器,根据访问的不同路径返回不同的状态码和响应内容。这可以帮助开发者测试不同状态码的行为和影响。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值