1. ホーム
  2. node.js

nodejsリクエストモジュールからリダイレクトされたURLを取得するにはどうしたらいいですか?

2023-10-15 17:49:43

質問

私はnodejsを使用して別のページに私をリダイレクトするURLをフォロースルーしようとしている リクエストモジュール .

ドキュメントを調べても、リダイレクト後のurlを取得できるものは見つかりませんでした。

私のコードは次のとおりです。

var request = require("request"),
    options = {
      uri: 'http://www.someredirect.com/somepage.asp',
      timeout: 2000,
      followAllRedirects: true
    };

request( options, function(error, response, body) {

    console.log( response );

});

どのように解決するのですか?

リダイレクトの連鎖で最後のURLを手に入れるには、2つの非常に簡単な方法があります。

var r = request(url, function (e, response) {
  r.uri
  response.request.uri
})

uriはオブジェクトです。uri.hrefはクエリパラメータを含むurlを文字列として含みます。

コードはrequestの作者によるgithub issueのコメントから引用しています。 https://github.com/mikeal/request/pull/220#issuecomment-5012579

var request = require('request');
var r = request.get('http://google.com?q=foo', function (err, res, body) {
  console.log(r.uri.href);
  console.log(res.request.uri.href);

  // Mikael doesn't mention getting the uri using 'this' so maybe it's best to avoid it
  // please add a comment if you know why this might be bad
  console.log(this.uri.href);
});

これは、以下のように表示されます。 http://www.google.com/?q=foo と3回表示されます (wwwのないアドレスからwwwのあるアドレスにリダイレクトされたことに注意してください)。