headers
headers
は、サーバーコンポーネントから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
オブジェクト内の特定の名前を持つヘッダーのすべての値の文字列
シーケンスを返します。Headers.has()
:Headers
オブジェクトが特定のヘッダーを含むかどうかを示すブール値を返します。Headers.keys()
: このオブジェクトに含まれるキー/値のペアのすべてのキーを走査できるiterator
を返します。Headers.values()
: このオブジェクトに含まれるキー/値のペアのすべての値を走査できるiterator
を返します。
補足
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 }, // Authorizationヘッダーを転送
})
const user = await res.json()
return <h1>{user.name}</h1>
}
バージョン履歴
バージョン | 変更点 |
---|---|
v15.0.0-RC | headers が非同期関数になりました。コードモッドが利用可能です。 |
v13.0.0 | headers が導入されました。 |