使用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。
