Spec-Zone.ru › Next.js

Заголовки

Функция headers позволяет вам прочитать заголовки входящего HTTP-запроса из компонента сервера.

headers()

Этот API расширяет API заголовков Web Headers. Он является только для чтения, что означает, что вы не можете set / delete заголовки исходящего запроса.

import { headers } from 'next/headers'
 
export default function Page() {
  const headersList = headers()
  const referer = headersList.get('referer')
 
  return <div>Referer: {referer}</div>
}

Важно знать:

  • headers() — это динамическая функция, значения которой нельзя узнать заранее. Использование её в макете или на странице вызовет динамическое рендеринг во время запроса.

Справочник API

const headersList = headers()

Параметры

headers не принимает никаких параметров.

Возвращаемое значение

headers возвращает только для чтения объект Web Headers.

  • Headers.entries(): Возвращает итератор, позволяющий перебрать все пары ключ/значение, содержащиеся в этом объекте.
  • Headers.forEach(): Выполняет предоставленную функцию один раз для каждой пары ключ/значение в этом объекте Headers.
  • Headers.get(): Возвращает строку всех значений заголовка в объекте Headers с заданным именем.
  • Headers.has(): Возвращает булево значение, указывающее, содержит ли объект Headers определенный заголовок.
  • Headers.keys(): Возвращает итератор, позволяющий перебрать все ключи пар ключ/значение, содержащихся в этом объекте.
  • Headers.values(): Возвращает итератор, позволяющий перебрать все значения пар ключ/значение, содержащихся в этом объекте.

Примеры

Использование с загрузкой данных

headers() может использоваться в сочетании с Suspense для загрузки данных.

import { Suspense } from 'react'
import { headers } from 'next/headers'
 
async function User() {
  const authorization = headers().get('authorization')
  const res = await fetch('...', {
    headers: { authorization }, // Forward the authorization header
  })
  const user = await res.json()
 
  return <h1>{user.name}</h1>
}
 
export default function Page() {
  return (
    <Suspense fallback={null}>
      <User />
    </Suspense>
  )
}

IP-адрес

headers() может использоваться для получения IP-адреса клиента.

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 представлена.

© 2024 Vercel, Inc.
Licensed under the MIT License.
https://nextjs.org/docs/app/api-reference/functions/headers

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API