質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
IPv4

IPv4(Internet Protocol version 4)は、インターネットプロトコルの一つ。インターネットに繋がったコンピューターや機器を識別するためのIPアドレスを32ビット表記で表わします。しかしIPv4は、限界があるため、IPv6が次世代プロトコルとして注目されています。

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

1回答

4990閲覧

http.getで出るエラーを対処するには?

syou_0615

総合スコア5

IPv4

IPv4(Internet Protocol version 4)は、インターネットプロトコルの一つ。インターネットに繋がったコンピューターや機器を識別するためのIPアドレスを32ビット表記で表わします。しかしIPv4は、限界があるため、IPv6が次世代プロトコルとして注目されています。

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/05/22 09:22

Node.jsにてパブリックIPアドレスを取得するAPI(https://www.ipify.org/)を使いたいのですが、

NodeJS

1var http = require('http'); 2 3http.get({'host': 'api.ipify.org', 'port': 80, 'path': '/'}, function(resp) { 4 resp.on('data', function(ip) { 5 console.log("My public IP address is: " + ip); 6 }); 7});

リンク先にある上記のコードを、express.jsのrouter.get内で使用すると、下記のようなエラーが出ます。

error

1events.js:292 2 throw er; // Unhandled 'error' event 3 ^ 4 5Error: connect ETIMEDOUT xx.xx.xx.xx:xx 6 at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1146:16) 7Emitted 'error' event on ClientRequest instance at: 8 at Socket.socketErrorListener (_http_client.js:469:9) 9 at Socket.emit (events.js:315:20) 10 at emitErrorNT (internal/streams/destroy.js:106:8) 11 at emitErrorCloseNT (internal/streams/destroy.js:74:3) 12 at processTicksAndRejections (internal/process/task_queues.js:80:21) { 13 errno: -4039, 14 code: 'ETIMEDOUT', 15 syscall: 'connect', 16 address: 'xx.xx.xx.xx', 17 port: xx 18} 19error Command failed with exit code 1. 20info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

これは学校のPCで出るのですが、家のPCでは普通にアドレスを取得できます。おそらくプロキシが原因だとは思うんですが、調べてもあまり分からないです。どうすればいいでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Proxy を経由しないと外部と通信できない環境であれば、Proxy を経由するようにする必要があります。

nodejs

1http.get({'host': 'proxy', 'port': 8080, 'path': 'http://api.ipify.org/'}, function(resp) { 2 resp.on('data', function(ip) { 3 console.log("My public IP address is: " + ip); 4 }); 5});

host, port は学校の Proxy サーバーの情報を指定してください。

投稿2021/05/22 14:22

yh1224

総合スコア653

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syou_0615

2021/05/22 15:51

回答ありがとうございます。プロキシを指定すれば経由してできるようになるのですが、サーバーにアップロードしてWebアプリケーションとして公開した場合、他の学校のPCや企業のPCからアクセスしてもらうときはどうすればいいのでしょうか?
yh1224

2021/05/22 15:57

Proxy サーバーが必要かどうか、必要な場合は Proxy サーバーのアドレスとポート番号を利用者が設定できるようにして、設定によって処理を切り換える必要があると思います。 使用するモジュールによっては特定の環境変数に設定するだけで Proxy サーバーを経由してくれるものもあります。(が、http モジュールでできるかはよく知りません、すみません。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問