【问题标题】:Golang net Dial user:pass@ip:port gives: no such hostGolang net Dial user:pass@ip:port 给出:没有这样的主机
【发布时间】:2023-03-10 13:12:01
【问题描述】:

我正在尝试连接到代理服务器以启动 HTTP CONNECT 隧道。代理服务器使用身份验证。但是,此代码无法正常工作:

conn, err := net.Dial("tcp", "[user:pass@111.222.333.444]:5555")

即使主机存在,我也会收到错误:

"dial tcp: lookup user:pass@111.222.333.444: no such host"

本文中描述了我使用的字符串格式。似乎无法让它工作。 https://stackoverflow.com/a/8858209/6767074

【问题讨论】:

  • user:pass@ 是干什么用的?
  • 代理服务器的基本身份验证。如果没有它,我会收到“需要 407 代理身份验证”响应。
  • tcp 不了解基本身份验证,也不关心,您需要为此使用 http-client。
  • 哦,好吧,所以我必须在其他地方添加凭据?
  • 是的,对于http-connection(或者对于处理代理连接的人,我对代理协议了解不多)

标签: http go httpconnection


【解决方案1】:

我最终找到了问题所在。 net.Dial() 方法与代理身份验证无关。

我只需要在请求 am HTTP 响应之前填写请求的“Proxy-Authorization”标头。所以我的 TCP 地址变成了:

conn, err := net.Dial("tcp", "111.222.333.444:5555")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-03
    • 1970-01-01
    • 2021-11-17
    • 2011-06-25
    相关资源
    最近更新 更多