headers
headersは非同期関数で、Server Componentから HTTP受信リクエストヘッダーを読み取ることができます。
app/page.tsx
TypeScript
import { headers } from 'next/headers'
export default async function Page() {
const headersList = await headers()
const userAgent = headersList.get('user-agent')
}リファレンス
パラメータ
headersはパラメータを取りません。
戻り値
headersは読み取り専用のWeb Headersオブジェクトを返します。
Headers.entries():このオブジェクトに含まれるすべてのキー/値ペアを順番に処理できるiteratorを返します。Headers.forEach():このHeadersオブジェクト内のキー/値ペアごとに、提供された関数を1回実行します。Headers.get():指定した名前のHeadersオブジェクト内のヘッダーのすべての値をStringシーケンスで返します。Headers.has():Headersオブジェクトが特定のヘッダーを含むかどうかを示すブール値を返します。Headers.keys():このオブジェクトに含まれるキー/値ペアのすべてのキーを順番に処理できるiteratorを返します。Headers.values():このオブジェクトに含まれるキー/値ペアのすべての値を順番に処理できるiteratorを返します。
補足
headersは非同期関数で、Promiseを返します。async/awaitまたはReactのuse関数を使用する必要があります。
- バージョン14以前では、
headersは同期関数でした。下位互換性を保つため、Next.js 15でも同期的にアクセスできますが、この動作は将来廃止予定です。headersは読み取り専用であるため、送信リクエストヘッダーをsetまたはdeleteすることはできません。headersはDynamic APIであり、返された値は事前に知ることができません。これを使用するとルートが**dynamic rendering**にオプトインされます。
例
Authorizationヘッダーの使用
app/page.js
import { headers } from 'next/headers'
export default async function Page() {
const authorization = (await headers()).get('authorization')
const res = await fetch('...', {
headers: { authorization }, // Authorizationヘッダーを転送
})
const user = await res.json()
return <h1>{user.name}</h1>
}バージョン履歴
| バージョン | 変更内容 |
|---|---|
v15.0.0-RC | headersが非同期関数になりました。codemodが利用可能です。 |
v13.0.0 | 導入時期:headers |