【问题标题】:Alternative to cURL connect-tocURL 连接的替代方案
【发布时间】:2021-04-21 01:47:00
【问题描述】:

API 的这个端点可以正常工作,如下所示:

curl -s -G \
  --connect-to "mumbai403::103.150.187.3:" \
  --cacert "ca.rsa.4096.crt" \
  --data-urlencode "pt=mytoken" \
  --data-urlencode "pubkey=mypubkey" \
  "https://mumbai403:1337/addKey"

但是,如果我删除connect-to并直接提供IP,则没有响应:

curl -s -G \
    --cacert "ca.rsa.4096.crt" \
    --data-urlencode "pt=mytoken" \
    --data-urlencode "pubkey=mypubkey" \
    "https://103.150.187.3:1337/addKey"

为什么没有connect-to 就不能工作?我需要摆脱它的原因是因为我不确定如何翻译该请求以使其在 Postman 和其他地方工作。

【问题讨论】:

  • 您的方法是正确的,您可以尝试使用 -i 和 -v 标志,这似乎是 ssl 版本问题。在邮递员中,如果您保留答案中提到的标头主机,它将正常工作

标签: javascript curl postman


【解决方案1】:

使用--resolve 获取实际目标 IP(可能位于负载平衡器后面)。

嗯,但您可能必须手动提供主机标头。

https://ec.haxx.se/usingcurl/usingcurl-connections#provide-a-replacement-name

【讨论】:

  • 但这仍然是特定于 curl 的,对吧?我想知道如何在说节点或 php 中实现这一点?
  • 这些只是包装libcurl。 HTTP 和 DNS 也不是 cURL 特定的。问题可能是,如果没有正确的主机标头,Web 服务器可能无法将请求分派到正确的虚拟主机(这是默认的包罗万象的虚拟主机很少出现这种情况)。如果您操作此服务器,请检查 DNS 设置 - 因为它通常不需要,而 DNS 可以告诉您该做什么。
  • 您也可以将其添加到运行 NodeJS 或 PHP 的服务器上的 /etc/hosts(本地 DNS)中,以防您无法控制区域文件...因为需要这样的映射清楚地提示缺少 DNS 条目。但是,要将其与 Postman 一起使用,您需要公共 DNS(它们无法映射,但必须解析)。
猜你喜欢
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
  • 2018-06-08
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多