尝试连接到 Stripe 的 API 时“无法解析主机”[关闭]
Posted
技术标签:
【中文标题】尝试连接到 Stripe 的 API 时“无法解析主机”[关闭]【英文标题】:"Could not resolve host" when trying to connect to Stripe's API [closed] 【发布时间】:2022-01-18 03:57:08 【问题描述】:正如标题所说,存在一些 DNS 问题,有时当我尝试在我的 docker 容器 https://api.stripe.com/v1/setup_intents
中进行 curl 时,它会返回 curl: (6) Could not resolve host: api.stripe.com
。如果我尝试 curl 其他网站,则不会发生此问题。
docker exec -it php-alpine /bin/sh
/var/www/html # curl https://api.stripe.com/v1/setup_intents
works. some json response
/var/www/html # curl https://api.stripe.com/v1/setup_intents
curl: (6) Could not resolve host: api.stripe.com
/var/www/html # curl https://api.stripe.com/v1/setup_intents
curl: (6) Could not resolve host: api.stripe.com
/var/www/html # curl https://api.stripe.com/v1/setup_intents
works. some json response
/var/www/html # curl https://api.stripe.com/v1/setup_intents
curl: (6) Could not resolve host: api.stripe.com
/var/www/html # curl https://api.stripe.com/v1/setup_intents
works. some json response
and so on...
但是,当我退出 docker 映像时,不会发生此问题。我可以在我的 Ubuntu 系统(在 WSL 上工作)上将该地址卷曲数百次,并且之前从未给我任何错误。
我尝试同时从本地 Ubuntu 系统和 docker 映像中卷曲该地址,虽然一切都在 Ubuntu 上运行,但在 docker 映像中我仍然遇到相同的错误。
【问题讨论】:
如果您的代码按预期工作,这只是您的网络配置问题,与 Stack Overflow 无关。 【参考方案1】:登录到 docker 容器并打开这个文件 /etc/resolv.conf
并在里面添加这一行:
nameserver 8.8.8.8
或者只是在容器中运行它:
echo "nameserver 8.8.8.8" > /etc/resolv.conf
【讨论】:
非常欢迎,随时。 为什么特别是这个名称服务器而不是其他名称服务器?这是货物崇拜的“编程”,无需解释。如果 DNS 查询在此容器设置中无法正常工作,这可能是短期的胜利,但从长远来看并不能真正解决任何问题。 @PatrickMevzek 你是对的,因为我更改了 DNS 服务器,所以现在 docker 别名不起作用。还有其他解决方案吗? 我之前遇到过同样的条带问题,通过在我的解析配置中添加两个与 google 相关的名称服务器解决了这个问题,这就是为什么我提供了该解决方案,它通过添加nameserver 8.8.8.8
和 nameserver 8.8.4.4
来解决
“现在一切正常” ...如果您愿意将所有内部 DNS 活动发送给外部方,是的。真正的解决方案是让您的 DNS 查询在本地工作,即使用本地名称服务器,例如 unbound
,或一些受信任的服务器(如果您信任它,则使用您的 ISP,或者您控制的另一个)。尤其是你说的“有时有问题”,有时是不正常的。以上是关于尝试连接到 Stripe 的 API 时“无法解析主机”[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
从 Firebase Cloud Function 连接到 Stripe 时出错
ASP.NET Core Web API:尝试激活时无法解析服务类型
无法使用 sqlplus 连接到数据库:ORA-12154:TNS:无法解析指定的连接标识符
尝试连接到 Google Oauth for google API 时 JWT 无效