有没有一种方法可以使用NextJS 13和新的应用程序目录来获取请求对象(NextRequest)或至少是服务器组件(页面和/或布局组件)中的request URL?我知道如何在客户端组件中实现,但我想在服务器组件中实现。
NextRequest
request URL
kyxcudwk1#
据我所知是不可能直接访问服务器组件内的请求。实际上,你可以使用headers().get('next-url')获取next-url头,但它似乎相当不稳定(至少在我的环境中)。作为解决方法,您可以使用middleware.ts在头文件中注入自定义数据,如:
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 }
1条答案
按热度按时间kyxcudwk1#
据我所知是不可能直接访问服务器组件内的请求。
实际上,你可以使用
headers().get('next-url')
获取next-url
头,但它似乎相当不稳定(至少在我的环境中)。作为解决方法,您可以使用
middleware.ts
在头文件中注入自定义数据,如:然后在服务器组件上: