【问题标题】:How to retrieve remote IP address in an Axios call from Node如何在 Node 的 Axios 调用中检索远程 IP 地址
【发布时间】:2017-08-31 20:15:25
【问题描述】:

当我在 Node.js 中进行 axios 调用时,我想获取远程 url 的解析 IP 地址。请参阅下面的***评论。提前非常感谢!

axios.get('http://www.example.com')
  .then(function (response) {
    // *** How can I get the resolved IP address of www.example.com here
  })
  .catch(function (error) {
    console.log(error);
  });

【问题讨论】:

  • 您是否有权访问远程服务器(如您是否管理它)?只有当您有权访问远程 url 服务器时,您才能执行此操作。您只能访问 HTTP 标头,除非远程服务器专门提供其 IP 地址作为标头的一部分,否则您将无法访问它。

标签: node.js reactjs axios


【解决方案1】:

Axios 会返回响应头和请求正文,如果没有指定,通常无法从头中获取 IP 地址,但您可以使用 node.js 中的dns 模块。

const dns = require('dns');

dns.resolve4('archive.org', (err, addresses) => {
  if (err) throw err;
  console.log(`addresses: ${JSON.stringify(addresses)}`);
});

【讨论】:

  • DNS 调用会不会浪费一些时间来解析 IP。我希望 IP 已经在 axios 调用中解析,我可以从那里获取它。如果可能的话,我想避免额外的 dns 调用。
  • 其实你可以并行运行2个调用,这样你就不会浪费任何时间......
  • 是的,那么您必须同步这两个调用,因为我需要同时响应和 IP 地址进行日志记录。您的解决方案会起作用,但它可能会使代码复杂一点。在我这样做之前,我希望有人可以确认 axios 是否将它隐藏在我可以使用的响应中。
【解决方案2】:

Axios 文档指出 response.request“是 node.js 中的最后一个 ClientRequest 实例(在重定向中)。”

axios.get('http://www.example.com')
  .then(function (response) {
    console.log(response.request.socket.remoteAddress);
  });

【讨论】:

  • 在回答中你提到了request.response,但是在代码中你写了response.request,哪一个是正确的?
猜你喜欢
  • 2021-11-22
  • 2012-02-07
  • 2021-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
  • 1970-01-01
相关资源
最近更新 更多