ネイティブのnode.js
http
モジュールを使用して、news.google.comにhttpリクエストを送信しようとしています。connect ECONNREFUSED 127.0.0.1:80
以下を試したときのエラー
var http = require('http');
var payload = JSON.stringify({
name: 'John Smith',
email: '[email protected]',
resume: 'https://drive.google.com/open?id=asgsaegsehsehseh'
});
var options = {
hostname: 'https://news.google.com',
path: '/',
method: 'GET'
};
var httpRequest = http.request(options, function(request, response) {
console.log('STATUS', response.statusCode);
response.setEncoding('utf8');
response.on('data', function(chunk) {
console.log('BODY:', chunk);
});
response.on('end', function() {
console.log('No more data in response');
});
});
httpRequest.on('error', function(e) {
console.log('Error with the request:', e.message);
});
httpRequest.write(payload);
httpRequest.end();
このエラーが発生するのはなぜですか?
request
npmモジュールを使用してみました。そしてそれはうまくいった!
私の場合、問題は実際に、私が使用していたHTTPクライアントのデフォルトの動作axios
でした。
デフォルトでは、リクエストされたURLまたはhttp
メソッド(GET/POST/PUT)が見つからない場合、axiosは127.0.0.1:80
にリダイレクトします。 axios
も使用している場合は、URLを確認してください。
私の問題は、supertest
とjest
の使用中に発生しました。私の間違いは、一部のURLの接頭辞として「/」を付けなかったことです。そのため、行っているリクエストのURLが適切かどうかを再確認してください。
ここにはいくつかの問題があります:
hostname
構造体のoptions
フィールドは、URLではなくホストのみにする必要があります。あなたの場合、それは_'news.google.com'
_でなければなりません。
request
メソッドへのコールバックのシグネチャはfunction (response)
です-あなたのものはfunction (request, response)
です。最初のパラメータを失います。
書かれているように、これはhttpsサイトへのHTTPリダイレクトを返します。 var http = require('http');
をvar https = require('https');
に置き換え、https
ではなくhttp
をどこでも使用します。