我正在做一个天气应用,我用IPIFY获取客户端IP,但这会丢失SSR,或者我使用SSR并获取服务器IP。有人告诉我,我可以使用header x-forwarded-for,然后使用此值,使用SSR调用天气API。问题是我只使用了nextjs,这里没有后端,其次,我不知道如何在前面调用或使用x-forwarded-for来获取客户端IP。1.* 这可能吗 *1.* 如何实现 *我用的是vercel来部署这个应用。
x-forwarded-for
zfycwa2u1#
更新了答案,因为request.connection自Node.js v13.0.0以来已被弃用。所以我们现在应该使用request.socket。
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 }, }; };
字符串
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, }, } }
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... }
3条答案
按热度按时间zfycwa2u1#
更新了答案,因为
request.connection
自Node.js v13.0.0以来已被弃用。所以我们现在应该使用request.socket
。字符串
e5njpo682#
给你:
字符串
uurv41yg3#
我想你可以通过getServerSideProps获取它们。
字符串