【问题标题】:How to get current domain at Nuxt 3 middleware?如何在 Nuxt 3 中间件获取当前域?
【发布时间】:2022-12-28 23:27:41
【问题描述】:

我不能在这里使用 window.location 因为它是 SSR 应用程序。 useRouter、useRoute 和 useNuxtApp 也没有域名。 nuxtApp.ssrContext 未定义。

export default defineNuxtRouteMiddleware((to: any, from: any) => {
  console.log("GET HOST HERE")
})

【问题讨论】:

  • 你不能使用环境变量吗?否则,制作一个快速端点并获得 request.headers.host 我猜。
  • @kissu 我必须动态知道主机,因为我的应用程序中有很多子域。我可以在不发送快递请求的情况下获得房东吗?
  • 如果您的应用程序是 SSR,那么向本地路由发送呼叫有什么问题?实际想法是什么?

标签: nuxt.js nuxtjs3


【解决方案1】:

我只是错过了在获取 nuxtApp.ssrContext 之前检查 process.server。这是我的问题的答案:

export default defineNuxtRouteMiddleware((to: any, from: any) => {
  const nuxtApp = useNuxtApp()
  let host = ''
  if(process.server) {
    host = nuxtApp.ssrContext.req.headers.host
  } else {
    host = window.location.host
  }
})

【讨论】:

  • 是的,Nuxt 在服务器和客户端(同构)上运行。如果可以,请随时接受您自己的问题。
  • 这在产品发布后不再适用于 Nuxt 3。
【解决方案2】:

发布后我使用

useNuxtApp().ssrContext.event.node.req.headers.host

代替

useNuxtApp().ssrContext.req.headers.host

【讨论】:

    猜你喜欢
    • 2019-11-13
    • 2016-04-01
    • 1970-01-01
    • 2014-11-29
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    相关资源
    最近更新 更多