我将尽我所能解释一切,对服务器的东西还不熟悉!所有内容都是用 Go 编写的,主要问题在于 ServeHTTP。
问题
我正在处理 (http.server).ListenAndServe()
接收到的请求,以便通过 (http.ReverseProxy).ServeHTTP(http.ResponseWriter, *http.Request)
发送到另一个代理服务器。我使用 Python 的 requests 提交 GET 请求并通过第一个服务器和第二个服务器将其代理到实际目标。我已经能够提交和接收 HTTP 请求,但无法提交 HTTPS 请求。
错误
我不断地从 python 请求库中收到 502 bad gateway
,很可能是由于 ServeHTTP() 中的 http: proxy error: unsupported protocol scheme ""
导致的,当我使用 https://httpbin.org 或任何其他 https 站点时。使用 http 会返回 html。
响应差异
*http.Response 的 http 和 https 差异在于
&{GET http://httpbin.org HTTP/1.0 1 0 map[] <nil> <nil> 0 [] true http://httpbin.org map[] map[] <nil> map[] [我的 IP 地址] http://httpbin.org <nil> <nil> <nil> 0xc000050fc0}
和 https 是
&{CONNECT //httpbin.org:443 HTTP/1.0 1 0 map[] <nil> <nil> 0 [] true httpbin.org:443 map[] map[] <nil> map[] [我的 IP 地址] httpbin.org:443 <nil> <nil> <nil> 0xc0000503c0}
这是一个关于 *http.Request 的链接。
我之前尝试过的
我尝试修改 ReverseProxy.Director 属性并使函数修改 *http.Request。我已经尝试了从中删除“:443”并添加“https://”或甚至“http://”,但这样会导致错误请求。我还尝试将 CONNECT 请求更改为 GET 或 POST,两者都有奇怪的结果,包括无效方法或错误请求。
有什么帮助吗?