2016-04-15 9 views
1

ノードrequestモジュールをノードシェル内から使用して、HTTP POST経由でログインフォームを送信しています。ログインが成功すると、サーバーは「ホーム」ページ(HTTP GET付き)にリダイレクトされます。ノード '要求'モジュール:302リダイレクトで最後の応答を取得する

requestのドキュメントには、デフォルトですべてのリダイレクトが行われ、実際にはと表示されています。サーバー側でリダイレクトが確認できます。

しかし、クライアント側では、サーバー側で発生した最終的なリダイレクトの(html)応答本文を取得する必要があります。 (私の場合は、ホームページへの唯一の1のリダイレクトがあるが、それは明らかに一般的なケースでは以上の1つのリダイレクトもある可能性があります。)

ここ

は私のクライアント側のコードです:

var request = require('request'); 
request.post('http://localhost:8080/login', { 
    form: { 
     user:'u', 
     password:'p' 
    }}, 
    function(err, resp, body) { 
     console.log(body); 
}); 

問題上記のコードはコンソールには何も表示しません!

質問:最終的な応答を印刷するにはどうすればよいですか?さらに、リダイレクトの連鎖の場合、クライアント側で、少なくとも中間のリダイレクト(いくつかの情報は最低でもURLは理想的ですが、URLとHTTPメソッドの種類)を取得することが可能です、そして身体を要求しますか?

ので何も、サーバー上の間違ったではありません:私は、サーバーに対してcurlを使用している場合、私はちょうど罰金最終ホームページのHTMLを参照してください。

$ curl -L -d 'user=u' -d 'password=p' http://localhost:8080/login 
<html> ... </html> 
$ 

答えて

0
var request = require('request').defaults({ 
    followRedirect: true, 
    followAllRedirects: true 
}); 

request.post('http://localhost:8080/login', { 
    form: { 
     user:'u', 
     password:'p' 
    }}, 
    function(err, resp, body) { 
     console.log(body); 
}); 

は差がある、ということ試してみてください2つのオプション。 followRedirectはデフォルトでtrueになるはずです。また、実際に何が返されているかを見てみましょう。リダイレクトがサーバーではなくHTMLで発生していることがわかるまで、同様の問題がありました。

関連する問題