欢迎访问宙启技术站
智能推送

使用BaseHTTPRequestHandler处理HTTP重定向的示例代码

发布时间:2023-12-24 07:25:05

下面是一个使用BaseHTTPRequestHandler处理HTTP重定向的示例代码:

from http.server import BaseHTTPRequestHandler
import urllib.parse

class RedirectHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        parsed_url = urllib.parse.urlparse(self.path)
        
        # 获取重定向的目标URL
        if parsed_url.path == '/redirect':
            redirect_url = 'http://www.example.com'
        else:
            redirect_url = 'http://www.example.com' + self.path
        
        # 构建重定向的响应
        self.send_response(301)
        self.send_header('Location', redirect_url)
        self.end_headers()

        # 将重定向页面返回给客户端
        self.wfile.write(b'<html><body>Redirecting...</body></html>')

if __name__ == '__main__':
    from http.server import HTTPServer
    
    server_address = ('', 8000)
    httpd = HTTPServer(server_address, RedirectHandler)
    print('Starting server on port 8000...')
    httpd.serve_forever()

上述代码定义了一个RedirectHandler类,继承自BaseHTTPRequestHandler。在do_GET方法中,我们根据请求的path来决定执行重定向操作还是返回重定向页面。根据不同的情况,我们设置不同的重定向目标URL,并构建301重定向的响应头。最后,我们返回一个简单的页面告知客户端正在重定向。

你可以运行上述代码来启动一个简单的HTTP服务器,监听在8000端口。当你访问http://localhost:8000/redirect时,服务器会重定向到http://www.example.com。当你访问http://localhost:8000/other时,服务器会重定向到http://www.example.com/other。

这个示例代码演示了如何使用BaseHTTPRequestHandler处理HTTP重定向。你可以根据自己的需求自定义处理逻辑和重定向目标URL。