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

w8ntj3qf  于 2023-11-18  发布在  其他
关注(0)|答案(3)|浏览(99)

我正在做一个天气应用,我用IPIFY获取客户端IP,但这会丢失SSR,或者我使用SSR并获取服务器IP。有人告诉我,我可以使用header x-forwarded-for,然后使用此值,使用SSR调用天气API。
问题是我只使用了nextjs,这里没有后端,其次,我不知道如何在前面调用或使用x-forwarded-for来获取客户端IP。
1.* 这可能吗 *
1.* 如何实现 *
我用的是vercel来部署这个应用。

zfycwa2u

zfycwa2u1#

更新了答案,因为request.connection自Node.js v13.0.0以来已被弃用。所以我们现在应该使用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 },
  };
};

字符串

e5njpo68

e5njpo682#

给你:

export async function getServerSideProps({ req }) {
  const forwarded = req.headers["x-forwarded-for"]
  const ip = forwarded ? forwarded.split(/, /)[0] : req.connection.remoteAddress
  return {
    props: {
      ip,
    },
  }
}

字符串

uurv41yg

uurv41yg3#

我想你可以通过getServerSideProps获取它们。

export async function getServerSideProps({ req }) {
  console.log(req.headers) //see if you have those headers
  return {
    props: {
      headers
    },
  }
}

function Page({ headers }) {
  // Render data...
}

字符串

相关问题