Заголовки
Функция 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-ipx-forwarded-hostx-forwarded-portx-forwarded-proto
История версий
| Версия | Изменения |
|---|---|
v13.0.0 |
headers представлена. |
© 2024 Vercel, Inc.
Licensed under the MIT License.
https://nextjs.org/docs/app/api-reference/functions/headers