Nuxt4 官网访问来源统计的实现

今天我遇到一个值得记录的问题,场景是这样的:官网后台需要做访问统计,我得把访问来源和访问目标的 URL 传递给后端。绕了好一阵子,才终于理清楚。

项目结构上,Nuxt 4 负责官网展示,后端是 Java 服务。核心在于理清请求链路:需要将用户访问 Nuxt 4 时的请求头信息传递到 Java 服务端。整个流程是"用户 → Nuxt 4 服务端 → Java 后端",这样就能实现来源统计。至于站内统计,监听路由变化发送请求即可。

最终我用了两个文件来落地这个方案,记录一下作为参考:

javascript 复制代码
// app/plugins/visit.client.ts

import { recordVisit } from '@/api' // 统计接口

export default defineNuxtPlugin(() => {
    const router = useRouter()
    router.afterEach((to, from) => {
        // 第一次进入不记录
        if (to.fullPath === from.fullPath) return
        const url = window.location.href || ''
        recordVisit(url)
    })
})
javascript 复制代码
// app/plugins/visit.server.ts

import { recordVisit } from '@/api' // 统计接口

export default defineNuxtPlugin(async () => {
    // 只在服务端执行
    if (!import.meta.server) return
    try {
        const url = useRequestURL()
        const headers = useRequestHeaders()
        recordVisit(url.href, headers.referer || '', headers).then(() => {
            console.log('记录访问成功')
        }).catch(() => { })
    } catch (e) {
        console.error('SSR 记录访问失败:', e)
    }
})
相关推荐
君顾13 小时前
智慧零售实战指南:从技术架构到落地方案全解析
java·开发语言·零售
南棱笑笑生4 小时前
20260904实测给飞凌OK3576-C开发板刷入Rockchip原厂的IMG固件【使用飞凌的DTS】切换串口波特率为1.5Mbps
c语言·开发语言·rockchip
梦曦i4 小时前
@meng-xi/create-uni-app vs unibest:轻量脚手架与重型框架的定位之争
前端·uni-app
平头哥技术团队4 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
乌萨奇也要立志学C++4 小时前
【洛谷】kmp算法
开发语言·算法
传奇开心果编程5 小时前
【Rust入门知识点学与练】第4课:条件判断 if / else
开发语言·学习·rust
乌恩大侠5 小时前
GH200 新增 NVMe SSD 分区、格式化与挂载完整流程
运维·服务器·前端
m0_380743875 小时前
给 Claude API 调用补上超时重试和错误分类
开发语言·人工智能·php
yume_sibai5 小时前
Element Plus 数据展示组件完全指南(15个核心组件)
前端·javascript·vue.js
Draw Stars5 小时前
Git BASH安装教程
开发语言·git·bash