Skip to content

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 標頭

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 現在是一個非同步函數。有一個 codemod 可用。
v13.0.0引入 headers