~2 دقیقه مطالعه • بروزرسانی ۲۰ آذر ۱۴۰۴
۱. NextRequest چیست؟
NextRequest نسخه گسترشیافتهای از Web Request API است که شامل متدهای اختصاصی برای خواندن و تغییر کوکیها و دسترسی به ویژگیهای URL در Next.js میباشد.
متدهای کوکی:
set(name, value): تنظیم کوکی روی درخواستget(name): دریافت مقدار کوکیgetAll(name?): دریافت همه کوکیها یا همه با نام خاصdelete(name): حذف کوکیhas(name): بررسی وجود کوکیclear(): حذف همه کوکیها از درخواست
ویژگیهای URL:
nextUrl.pathname: مسیر درخواستnextUrl.searchParams: پارامترهای کوئریbasePathوbuildId: اطلاعات متادیتای اپلیکیشن
۲. NextResponse چیست؟
NextResponse نسخه گسترشیافتهای از Web Response API است که شامل متدهایی برای تنظیم کوکی، پاسخ JSON، ریدایرکت، بازنویسی مسیر و ارسال هدرهای سفارشی میباشد.
متدهای کوکی:
set(name, value): تنظیم کوکی روی پاسخget(name): دریافت مقدار کوکیgetAll(name?): دریافت همه کوکیها یا همه با نام خاصdelete(name): حذف کوکی از پاسخ
ابزارهای پاسخدهی:
json(data, options): ارسال پاسخ JSONredirect(url): ریدایرکت به مسیر دیگرrewrite(url): بازنویسی مسیر بدون تغییر URL مرورگرnext(): ادامه مسیر (مناسب برای پراکسی و middleware)
۳. ارسال امن هدرها
برای ارسال هدرها به صورت امن، از allow-list استفاده کنید و فقط هدرهای مطمئن را منتقل نمایید:
const incoming = new Headers(request.headers)
const forwarded = new Headers()
for (const [name, value] of incoming) {
const headerName = name.toLowerCase()
if (
!headerName.startsWith('x-') &&
headerName !== 'authorization' &&
headerName !== 'cookie'
) {
forwarded.set(name, value)
}
}
return NextResponse.next({ request: { headers: forwarded } })۴. ریدایرکت با پارامترهای سفارشی
میتوانید مسیر ریدایرکت را با استفاده از request.nextUrl تغییر دهید:
const loginUrl = new URL('/login', request.url)
loginUrl.searchParams.set('from', request.nextUrl.pathname)
return NextResponse.redirect(loginUrl)۵. بازنویسی مسیر با rewrite()
برای پراکسی کردن مسیر بدون تغییر URL مرورگر از NextResponse.rewrite() استفاده کنید:
return NextResponse.rewrite(new URL('/proxy', request.url))جمعبندی
NextRequest و NextResponse ابزارهایی قدرتمند برای کنترل دقیق کوکیها، هدرها، مسیرها و پاسخها در Next.js هستند. با استفاده از آنها میتوانید تجربهای شخصیسازیشده، امن و بهینه برای کاربران خود بسازید.
نوشته و پژوهش شده توسط دکتر شاهین صیامی