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 中以同步方式存取它,但此行為將在未來被棄用。
- 在版本 14 以及更早的版本中,
- 由於
headers
是唯讀的,因此您無法set
或delete
外送請求標頭。 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-RC | headers 現在是一個非同步函式。 提供了 程式碼修改工具。 |
v13.0.0 | 引進 headers 。 |
這有幫助嗎?