【发布时间】:2015-02-27 07:44:25
【问题描述】:
下面是我用来重定向端口 8080 上的常规 HTTP 请求的简单脚本,它会立即根据源 IP 地址重定向(使它们至少是)它们。
它可以工作(对于 HTTP),但是我希望对来自 443 端口的 HTTPS 请求具有相同的行为。假设如果重定向不存在,这个简单服务器的传入客户端将能够通过自签名证书与他们被重定向到的目标握手。
import SimpleHTTPServer
import SocketServer
LISTEN_PORT = 8080
source = "127.0.0.1"
target = "http://target/"
class simpleHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_POST(self):
clientAddressString = ''.join(str(self.clientAddress))
if source in clientAddressString:
# redirect incoming request
self.send_response(301)
new_path = '%s%s' % (target, self.path)
self.send_header('Location', new_path)
self.end_headers()
handler = SocketServer.TCPServer(("", LISTEN_PORT), simpleHandler)
handler.serve_forever()
我可以使用自签名证书并可以访问通常用于此连接的文件“server.crt”和“server.key”(无需中间重定向 python 服务器)。我不确定当我像这样在两者之间进行重定向时会发生什么,尽管我认为它必须是握手链的一部分。
我怎样才能实现这种行为?
除了新目标和请求标头中的响应代码之外,我还有什么需要修改的吗?
【问题讨论】:
标签: python ssl https socketserver simplehttpserver