headers
headers
は 非同期 関数であり、HTTP の受信リクエストヘッダーを Server Component から 読み取る ことができます。
- TypeScript
- JavaScript
app/page.tsx
import { headers } from 'next/headers'
export default async function Page() {
const headersList = await headers()
const userAgent = headersList.get('user-agent')
}
app/page.js
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()
: このオブジェクト 内に含まれるすべてのキー/値ペアの値を取得するためのイテレーター
を返します
Good to know
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>
}
バージョン履歴
Version | 変更点 |
---|---|
v15.0.0-RC | headers は非同期関数となりました。codemod が利用可能です。 |
v13.0.0 | headers が導入されました。 |