在NextJS上获取客户端IP并使用SSR

Eve*_*rck 3 ip clientip server-side-rendering next.js

我正在制作一个天气应用程序,我使用 IPIFY 获取客户端 IP,但这会丢失 SSR,或者我使用 SSR 并获取服务器 IP。有人告诉我,我可以使用标头x-forwarded-for,然后使用该值通过 SSR 进行天气 API 调用。

问题是我只使用nextjs,这里没有后端,其次,我不知道如何x-forwarded-for在前端调用或使用来获取客户端IP。

  1. 这可能吗?

  2. 我怎样才能实现它?

我正在使用 vercel 来部署应用程序。

Dio*_*ela 8

更新了自 Node.js v13.0.0 以来request.connection已弃用的答案。所以我们现在应该改用。request.socket

export const getServerSideProps = async ({ req }) => {
  const forwarded = req.headers['x-forwarded-for'];

  const ip = typeof forwarded === 'string' ? forwarded.split(/, /)[0] : req.socket.remoteAddress;

  console.log(ip);

  return {
    props: { ip },
  };
};
Run Code Online (Sandbox Code Playgroud)