headers
headers
は、サーバーコンポーネントからHTTP受信リクエストヘッダーを読み取るための非同期関数です。
app/page.tsx
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()
: このオブジェクトに含まれるすべてのキー/値のペアを順に処理するためのイテレータ
を返します。Headers.forEach()
: このHeaders
オブジェクト内の各キー/値のペアに対して、指定された関数を一度実行します。Headers.get()
: 指定された名前を持つHeaders
オブジェクト内のヘッダーのすべての値の文字列
シーケンスを返します。Headers.has()
:Headers
オブジェクトが特定のヘッダーを含むかどうかを示すブール値を返します。Headers.keys()
: このオブジェクトに含まれるキー/値ペアのすべてのキーを順に処理するためのイテレータ
を返します。Headers.values()
: このオブジェクトに含まれるキー/値ペアのすべての値を順に処理するためのイテレータ
を返します。
知っておくと良いこと
headers
はプロミスを返す非同期関数です。async/await
または React のuse
関数を使用する必要があります。- バージョン14以前では、
headers
は同期関数でした。後方互換性を保つため、Next.js 15でも同期的にアクセスできますが、この挙動は将来的に非推奨になります。
- バージョン14以前では、
headers
は読み取り専用であるため、送信リクエストヘッダーをset
したりdelete
したりすることはできません。headers
は、返される値が事前に不明なダイナミックAPIです。これを使用すると、ルートはダイナミックレンダリングにオプトインされます。
例
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 }, // Forward the authorization header
})
const user = await res.json()
return <h1>{user.name}</h1>
}
バージョン履歴
バージョン | 変更点 |
---|---|
v15.0.0-RC | headers が非同期関数になりました。Codemod が利用可能です。 |
v13.0.0 | headers が導入されました。 |
役に立ちましたか?