Menu

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することはできません。
  • headersDynamic 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-RCheadersが非同期関数になりました。codemodが利用可能です。
v13.0.0導入時期:headers