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)
    }
})
相关推荐
Z_Wonderful1 分钟前
微前端:Webpack 配置 vs Vite 配置 超清晰对比
前端·webpack·node.js
流年如夢1 分钟前
结构体:定义、使用与内存布局
c语言·开发语言·数据结构·c++·算法
thankseveryday3 分钟前
Three.js 把 Blender 绘制的曲线(Bezier / 曲线) 导入 Three.js 并作为运动路径 / 动画路径使用
开发语言·javascript·blender
Ulyanov4 分钟前
《玩转QT Designer Studio:从设计到实战》 QT Designer Studio动画与动效系统深度解析
开发语言·python·qt·系统仿真·雷达电子对抗仿真
码云数智-园园6 分钟前
HTTPS是如何工作的?从HTTP到HTTPS的加密演进
前端
兩尛10 分钟前
struct,union,Class,bitfield各自的作用和区别
java·开发语言
隔窗听雨眠14 分钟前
HTML头部元信息避坑指南
前端·html
Gauss松鼠会21 分钟前
【openGauss】openGauss 磁盘引擎之 ustore
java·服务器·开发语言·前端·数据库·经验分享·gaussdb
LIO22 分钟前
前端响应式页面开发全攻略:核心技术 + 实现效果 + 实战指南
前端·响应式设计
YSF2017_325 分钟前
C语言-13-制作动态库
c语言·开发语言