我正在阅读goagent的早期版本,我不知道调用do_CONNECT方法在哪里。
class GaeProxyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
...
def do_CONNECT(self):
...
也不会调用下一页中的相同方法。 click here
是的,如果你搜索“do_CONNECT”,你几乎什么也得不到,但要搜索“http方法CONNECT”
答案 0 :(得分:1)
GaeProxyHandler的基类是BaseHTTPRequestHandler,因此代码可以用BaseHTTPRequestHandler编写
如果要运行代理,则应运行以下代码:
server = LocalProxyServer((common.LISTEN_IP, common.LISTEN_PORT), GAEProxyHandler)
server.serve_forever()
所以你知道服务器本身可能会编写关于现在调用方法do_CONNECT的代码。
让我们看看它的回溯,实际上是这样。
File "E:\Python33\lib\threading.py", line 616, in _bootstrap
self._bootstrap_inner()
File "E:\Python33\lib\threading.py", line 639, in _bootstrap_inner
self.run()
File "E:\Python33\lib\threading.py", line 596, in run
self._target(*self._args, **self._kwargs)
File "E:\Python33\lib\socketserver.py", line 610, in process_request_thread
self.finish_request(request, client_address)
File "E:\Python33\lib\socketserver.py", line 345, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "E:\Python33\lib\socketserver.py", line 666, in __init__
self.handle()
File "E:\Python33\lib\http\server.py", line 400, in handle
self.handle_one_request()
File "E:\Python33\lib\http\server.py", line 388, in handle_one_request
method()
File "E:\eclipse\workspace\GoAgent\src\goagent-local\proxy.py", line 1758, in **do_CONNECT**
查看最后的 do_CONNECT ?
答案 1 :(得分:1)
CONNECT是一种类似GET或POST的方法,让客户端在向REAL服务器发送请求之前告诉PROXY服务器他们需要完成ssl握手。
因此,当需要转发https请求时,将调用do_CONNECT。
检查this