ホームページ  >  記事  >  バックエンド開発  >  Go で HTTP GET リクエストを行う際のエラー:「dial tcp:lookup api.ipify.org on:53:read udp:50975->:53:read:connectionrejected」

Go で HTTP GET リクエストを行う際のエラー:「dial tcp:lookup api.ipify.org on:53:read udp:50975->:53:read:connectionrejected」

王林
王林転載
2024-02-10 11:57:211224ブラウズ

在 Go 中发出 HTTP GET 请求时出错:“dial tcp:lookup api.ipify.org on:53:read udp:50975->:53:read:connectionrejected”

Go 言語では、HTTP GET リクエストを送信しようとすると、「dial tcp: lookup api.ipify」というメッセージが表示されることがあります。 .org on: 53: read udp: 50975->: 53: read: 接続が拒否されました」エラーが発生します。このエラーは通常、ネットワーク接続に関して表示され、プログラムがターゲット サーバーへの接続を確立できないことを意味します。このエラーには、ネットワーク障害、DNS 解決の問題、ファイアウォールの制限など、さまざまな理由が考えられます。この問題の解決策は、ネットワーク設定をチェックする、DNS 解決が正しいかどうかを確認する、ファイアウォールの制限を取り除くなど、特定の状況によって異なります。このエラーを解決することで、Go プログラムが HTTP リクエストを適切に送信し、必要なデータを取得できるようになります。

質問の内容

Go で net/http パッケージを使用して HTTP GET リクエストを作成し、api.ipify.org を使用してパブリック IP アドレスを取得しようとしています。サービス 。次のコマンドを使用してアプリケーションをビルドした後にのみエラーが発生します:

リーリー

ただし、次のコマンドを使用すると、コードが完全に正常に実行されることに気付きました。 リーリー リーリー

これは私が使用しているコードです:

リーリー

私を混乱させているのは、コードが

go buildgo run では動作するのに、より複雑なビルド コマンドを使用すると失敗する理由です。この問題の原因とその解決方法を理解できる人はいますか?お時間を割いてご協力いただきありがとうございました!

回避策

cgo が使用可能な場合は、cgo ベースのパーサーが使用されます。 /etc/resolv.conf や /etc/nsswitch.conf などを読み取っているドメインを解決するためにさまざまな手段を使用します。これらの機能は Go ベースの DNS リゾルバーでは実装されていないため、ドメインが解決されず、HTTP リクエストが失敗します。

以上がGo で HTTP GET リクエストを行う際のエラー:「dial tcp:lookup api.ipify.org on:53:read udp:50975->:53:read:connectionrejected」の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。