You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt3中API URL秘密变量泄露问题求助

Nuxt3 隐藏API URL避免泄露的解决方法

你的问题出在runtimeConfig的配置位置错误:Nuxt3中,runtimeConfig.app下的变量会被暴露给客户端,所以你的API URL才会出现在网站源码里。

解决步骤:

  1. 调整nuxt.config.ts的配置结构
    将API URL移到runtimeConfig的根节点下(不要放在app或public里),根节点的变量仅服务端可访问,不会被传到前端:

    export default defineNuxtConfig({
      ssr: true,
      routeRules: {},
      modules: [],
      runtimeConfig: {
        // 仅服务端可见的秘密变量
        apiUrl: process.env.NUXT_API_HOST,
        public: {
          // 此处放需要客户端访问的公开变量(可选)
        }
      }
    })
    
  2. 在服务端代码中安全使用变量
    通过服务端逻辑(比如Nuxt的Server API路由、服务器中间件)调用API,避免客户端直接接触真实的API地址。示例:
    在server/api/data.ts中创建转发路由:

    export default defineEventHandler(async (event) => {
      const config = useRuntimeConfig()
      // 服务端安全访问API URL
      const res = await fetch(`${config.apiUrl}/your-endpoint`)
      return await res.json()
    })
    
  3. 客户端通过服务端路由间接调用API
    客户端代码只需要请求自己的服务端路由,无需知道真实API地址:

    const data = await useFetch('/api/data')
    

为什么原来的配置会泄露?

Nuxt3的runtimeConfig.app属于客户端可访问的配置域,会被打包到window.__NUXT__全局对象中,所以任何放在这里的变量都会出现在网站源码里。只有runtimeConfig根节点下的变量是服务端专用的,不会暴露给客户端。

内容的提问来源于stack exchange,提问作者Kamil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 06:17:25