headers

تتيح لك وظيفة headers قراءة رؤوس طلب HTTP الواردة من مكون الخادم (Server Component).

headers()

هذه الواجهة تمتد من واجهة Web Headers API. وهي للقراءة فقط، مما يعني أنه لا يمكنك تعيين أو حذف رؤوس الطلب الصادرة.

import { headers } from 'next/headers'

export default function Page() {
  const headersList = headers()
  const referer = headersList.get('referer')

  return <div>Referer: {referer}</div>
}
import { headers } from 'next/headers'

export default function Page() {
  const headersList = headers()
  const referer = headersList.get('referer')

  return <div>Referer: {referer}</div>
}

معلومة مفيدة:

مرجع API

const headersList = headers()

المعاملات

لا تأخذ headers أي معاملات.

القيم المُرجعة

تُرجع headers كائن Web Headers للقراءة فقط.

أمثلة

الاستخدام مع جلب البيانات

يمكن استخدام headers() مع Suspense لجلب البيانات (Suspense for Data Fetching).

app/page.js
import { Suspense } from 'react'
import { headers } from 'next/headers'

async function User() {
  const authorization = headers().get('authorization')
  const res = await fetch('...', {
    headers: { authorization }, // تمرير رأس التفويض
  })
  const user = await res.json()

  return <h1>{user.name}</h1>
}

export default function Page() {
  return (
    <Suspense fallback={null}>
      <User />
    </Suspense>
  )
}

عنوان IP

يمكن استخدام headers() للحصول على عنوان IP الخاص بالعميل.

app/page.js
import { Suspense } from 'react'
import { headers } from 'next/headers'

function IP() {
  const FALLBACK_IP_ADDRESS = '0.0.0.0'
  const forwardedFor = headers().get('x-forwarded-for')

  if (forwardedFor) {
    return forwardedFor.split(',')[0] ?? FALLBACK_IP_ADDRESS
  }

  return headers().get('x-real-ip') ?? FALLBACK_IP_ADDRESS
}

export default function Page() {
  return (
    <Suspense fallback={null}>
      <IP />
    </Suspense>
  )
}

بالإضافة إلى x-forwarded-for، يمكن لـ headers() قراءة:

  • x-real-ip
  • x-forwarded-host
  • x-forwarded-port
  • x-forwarded-proto

سجل الإصدارات

الإصدارالتغييرات
v13.0.0تم إدخال headers.