headers
headers
は、Server ComponentからHTTPの受信リクエストヘッダーを読み取ることができる非同期関数です。
- 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
オブジェクト内の各キー/値ペアに対して、提供された関数を1回実行します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 }, // Authorization ヘッダーを転送
})
const user = await res.json()
return <h1>{user.name}</h1>
}
バージョン履歴
バージョン | 変更点 |
---|---|
v15.0.0-RC | headers は非同期関数になりました。 codemodが利用可能です。 |
v13.0.0 | headers が導入されました。 |