【发布时间】:2021-07-10 03:34:20
【问题描述】:
我想知道如何在 Nuxt.js 中获取客户端 IP 地址。
我在客户端使用 Nuxt.js,在服务器端使用 Express。
我以为当服务器端收到请求时,我可以通过req.connection.remoteAddress 或 req.headers['x-forwarded-for'].split(',').pop() 在服务器端获取客户端IP 地址。
但是,通过上面的代码,我只能得到::ffff:127.0.0.1。
我google发现如果我使用nginx,我可以通过设置文件设置x-forwarded-for,但我没有使用nginx。
我可能正在使用@nuxtjs/proxy(但我不确定。对不起,我不太了解代理。)
modules: [
'@nuxtjs/axios',
'@nuxtjs/pwa',
'@nuxtjs/proxy',
'@nuxtjs/auth',
],
proxy: {
'/api/': {
target: process.browser ? '' : 'http://localhost:3001',
pathRewrite: { '^/api/': '/' },
},
}
(nuxt.config.js的一部分。)
通过阅读@nuxtjs/proxy的文档,似乎可以设置'x-forwarded-for'标头,但我不知道如何获取客户端IP地址,我无法设置标头。
作为另一种方式,我尝试将客户端IP地址设置为参数,并使用以下代码。
client side
if (process.browser) {
const ip = await this.$axios.$get('/ip/')
}
// send an request with this ip as a parameter.
nuxt.config.js
proxy: {
'/api/': {
target: process.browser ? '' : 'http://localhost:3001',
pathRewrite: { '^/api/': '/' },
},
'/ip/': {
target: process.browser ? 'http://icanhazip.com' : 'http://icanhazip.com',
pathRewrite: { '^/ip/': '/' },
},
},
但我只能得到相同的,服务器端,全局 IP 地址,虽然我使用了process.browser。
请帮我在 Nuxt.js 中获取客户端 IP 地址。 谢谢。
【问题讨论】:
-
感谢您的重播。我会检查它是否有效。
-
很抱歉,您教给我的解决方案不起作用。我得到的所有ip都是
undefined。在解决方案中,使用了 nginx,并编写了一些设置来设置 headers。但我只是使用@nuxtjs/proxy,我没有(知道如何)编写这样的设置。 -
我已经更新了我的答案,感谢您的详细反馈。
标签: nuxt.js ip-address