跳至內容
API 參考函式標頭 (headers)

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():回傳一個 iterator,允許遍歷此物件中包含的所有鍵值對。
  • Headers.forEach():針對此 Headers 物件中的每個鍵值對執行一次所提供的函式。
  • Headers.get():回傳一個 String 序列,包含在 Headers 物件中具有指定名稱的所有標頭值。
  • Headers.has():回傳一個布林值,表示 Headers 物件是否包含特定標頭。
  • Headers.keys():回傳一個iterator,允許您遍歷此物件中包含的所有鍵值對的鍵。
  • Headers.values():回傳一個iterator,允許您遍歷此物件中包含的所有鍵值對的值。

注意事項

  • headers 是一個**非同步**函式,它會回傳一個 Promise。您必須使用 async/await 或 React 的 use 函式。
    • 在版本 14 以及更早的版本中,headers 是一個同步函式。為了向下相容,您仍然可以在 Next.js 15 中以同步方式存取它,但此行為將在未來被棄用。
  • 由於 headers 是唯讀的,因此您無法 setdelete 外送請求標頭。
  • headers 是一個動態 API,其回傳值無法事先得知。在 中使用它會將路由選擇為**動態渲染**。

範例

使用授權標頭 (Authorization header)

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-RCheaders 現在是一個非同步函式。 提供了 程式碼修改工具
v13.0.0引進 headers