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是隻讀的,你不能設定或刪除傳出的請求頭。 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-RC | headers 現在是一個非同步函式。一個程式碼轉換工具可用。 |
v13.0.0 | headers 已引入。 |
這有幫助嗎?