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 已引入。 |
这有帮助吗?