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