尝试连接到 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.8nameserver 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 无效

无法通过服务名使用 SQLPLUS 连接到 oracle 数据库

当我尝试使用 nginx 连接到我的 lumen api 时返回 502