Vue Node.js 从请求 headers 中提取 cf-ipcountry cloudflare

Vue Node.js extract cf-ipcountry cloudflare from request headers

我目前正在为我的项目使用 vue js nuxt。我在解析请求 headers 以检索时遇到问题 cf-ipcountry 由 cloudflare 提供。这个用例是为不同的国家显示不同的内容

我的代码在我的 vue 文件下看起来像这样

   async asyncData(context) {  
    try{
     const countryCF = context.req.headers['cf-ipcountry'] 
    }
   }

当我尝试 console.log(countryCF) 它不会 return 它,但如果我尝试 console.log(context.req.headers['cf-ipcountry' ]) 它工作正常,它确实打印出整个 headers,但我只需要 cf-ipcountry,我错过了什么吗?谢谢

我使用了以下内容:

const country_code = req.headers['cf-ipcountry'] ?? 'unknown';

它对我来说效果很好,没有打印整个 headers,只打印 2 个字母的国家/地区代码。

我意识到原因是由于 Nuxt SSR 初始加载来自服务器端,但后续请求将是客户端,这就是它返回错误的原因

  if (process.server) {
      context.app.$cookiz.set('user-country', context.req.headers['cf-ipcountry']) 
  }

通过 if process.server 解决,我用这个包将它存储在 cookie 中 https://www.npmjs.com/package/cookie-universal-nuxt