我正在使用 Next.JS 14,如果请求来自浏览器但不是来自浏览器重定向到另一个网站,我想向客户端显示一个页面。 基于此代码部分,我已经完成了重定向部分,但没有任何用于显示页面的文档。 如果您能帮助我了解如何显示该页面,我将不胜感激。 谢谢。
// for GET method
export async function GET(request) {
const headersList = headers();
if(!headersList.get("Accept").includes("text/html")) {
return NextResponse.redirect("https://example.com");
}
return Page(); //LAYOUT
}
通过检查Header,我们可以确认请求是否来自浏览器
const headersList = headers()
// get relevant headers
const userAgent = headersList.get('user-agent')?.toLowerCase() || ''
const acceptHeader = headersList.get('Accept') || ''
const secFetchMode = headersList.get('Sec-Fetch-Mode')
const secFetchSite = headersList.get('Sec-Fetch-Site')
// browser detection logic
const isBrowser =
// check if it's a common browser user-agent
(userAgent.includes('mozilla/') || userAgent.includes('chrome/') ||
userAgent.includes('safari/') || userAgent.includes('edge/') ||
userAgent.includes('firefox/')) &&
// modern browsers send these security headers
secFetchMode === 'navigate' &&
// should be from same-origin or none (direct navigation)
(secFetchSite === 'same-origin' || secFetchSite === 'none') &&
// Should accept HTML
acceptHeader.includes('text/html')
// if not a browser, redirect
if (!isBrowser) {
return NextResponse.redirect('https://abcxyz.com.io')
}