Перенаправление промежуточного программного обеспечения Nuxt 3 на основе кода страны IP не работает при развертывании в Netlify

Я пытаюсь перенаправить трафик на конкретный пул на основе кода страны пользователя после поиска IP-адреса.

Он прекрасно работает локально, но не работает при развертывании в Netlify.

export default defineNuxtRouteMiddleware(async (to, from) => {
  const targetPathDe = '/de-de'
  const targetPathEn = '/de-en'

  // Prevent middleware from redirecting if already on the target path
  if (to.path === targetPathDe || to.path === targetPathEn) {
    return
  }

  const ipApiUrl = 'http://ip-api.com/json/?fields=countryCode'

  try {
    // Use native fetch to get IP data
    const response = await fetch(ipApiUrl)
    const ipData = await response.json()

    // Check the country code from IP data
    if (ipData.countryCode === 'DE') {
      return navigateTo(targetPathDe)
    } else {
      return navigateTo(targetPathEn)
    }
  } catch (error) {
    console.error('Error fetching IP data:', error)
    return navigateTo(targetPathEn)
  }
})

Локально я использую npm run dev, а Netlify — npm run build.

🤔 А знаете ли вы, что...
Vue.js можно использовать для создания плагинов и расширений для собственных проектов.


1
171
2

Ответы:

Решено

ОП рассматривает возможность использования функции края геолокации на данный момент.
Это проще реализовать и, возможно, точнее!


Судя по тому, что я вижу на сайте ip-api.com, для определения страны используется IP-адрес вызывающего абонента. В этом случае, если вы используете эту серверную часть, этот IP-адрес всегда будет IP-адресом работающего сервера, а не вашего клиента. Это будет работать локально, поскольку ваш IP-адрес является одновременно пользователем и сервером.