获取应用文件夹内NextJS服务器组件中的请求URL

w8ntj3qf  于 2023-05-17  发布在  其他
关注(0)|答案(1)|浏览(247)

有没有一种方法可以使用NextJS 13和新的应用程序目录来获取请求对象(NextRequest)或至少是服务器组件(页面和/或布局组件)中的request URL
我知道如何在客户端组件中实现,但我想在服务器组件中实现。

kyxcudwk

kyxcudwk1#

据我所知是不可能直接访问服务器组件内的请求。
实际上,你可以使用headers().get('next-url')获取next-url头,但它似乎相当不稳定(至少在我的环境中)。
作为解决方法,您可以使用middleware.ts在头文件中注入自定义数据,如:

export async function Middleware(req) {
  const requestHeaders = new Headers(req.headers)
  requestHeaders.set('x-url', req.nextUrl.url)

  return NextResponse.next({
    request: {
      headers: requestHeaders
    }
  })
}

然后在服务器组件上:

const MyServerComponent = () => {
  const url = headers().get('x-url')
  // Stuff with the URL
}

相关问题