vue3获取所有访问页面的ip地址
时间: 2025-07-06 09:47:04 浏览: 13
### 实现方案
为了在 Vue3 应用中记录并获取所有访客的 IP 地址,可以采用 Nginx 反向代理的方式设置 HTTP 头部来传递真实的客户端 IP 地址。通过这种方式,在后端处理请求时能够读取到 `X-Forwarded-For` 这个头部字段中的第一个非内部网段的 IP 值作为用户的实际公网 IP。
对于前端部分,则可以通过 API 请求的形式将此信息发送给前端应用,并存储起来用于后续显示或其他用途。以下是具体的实施步骤:
#### 配置Nginx转发真实IP地址
在 Nginx 的配置文件中加入如下指令以确保当流量经过反向代理到达 Web 服务器之前会附带原始客户端 IP:
```nginx
location / {
proxy_pass http://backend;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
```
这段配置使得每次有新的连接进来的时候都会把真正的远程地址附加到请求头里[^1]。
#### 后端API提供者修改响应逻辑
假设有一个基于 Node.js 构建的服务端程序负责接收来自前端的应用调用,此时可以在路由处理器函数里面解析上述提到过的两个自定义HTTP Header(`X-Real-IP`, `X-Forwarded-For`) 来决定最终要返回哪个 IP 给前端。
如果使用 Express 框架的话,代码可能看起来像这样:
```javascript
app.get('/api/get-ip', (req, res) => {
let ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
if(ip){
const ips = ip.split(',');
ip = ips[0]; // 获取最左边的那个即为最初发起请求者的公共网络上的IP
}
res.json({ip});
})
```
以上代码片段展示了如何从请求对象中提取出正确的 IP 地址[^3]。
#### 在Vue3组件中集成
最后一步是在 Vue3 中创建一个简单的 Axios 客户端实例来进行异步数据抓取操作并将获得的信息保存至 Vuex Store 或本地缓存机制如 Session Storage 当中以便于其他地方重用这些数据。
```typescript
import axios from 'axios';
const instance = axios.create({
baseURL: process.env.VUE_APP_API_URL,
timeout: 5000
});
export async function fetchVisitorIp(): Promise<string> {
try{
const response = await instance.get('/api/get-ip');
sessionStorage.setItem('visitor_ip',response.data.ip);
return response.data.ip;
}catch(error){
console.error("Failed to get visitor's IP:", error.message);
throw new Error("Unable to retrieve the visitor's IP address.");
}
}
```
该 TypeScript 函数实现了对 `/api/get-ip` 接口的成功调用以及成功后的结果持久化过程[^2]。
阅读全文
相关推荐


















