NextJS中文文档 - Headers
headers
是一个异步函数,允许你从服务器组件中读取 HTTP 传入请求头。
tsx
import { headers } from 'next/headers'
export default async function Page() {
const headersList = await headers()
const userAgent = headersList.get('user-agent')
}
jsx
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()
:返回一个迭代器
,允许遍历此对象中包含的所有键/值对。Headers.forEach()
:对此Headers
对象中的每个键/值对执行提供的函数一次。Headers.get()
:返回给定名称的Headers
对象中某个标头的所有值的字符串
序列。Headers.has()
:返回一个布尔值,说明Headers
对象是否包含某个标头。Headers.keys()
:返回一个迭代器
,允许你遍历此对象中包含的所有键/值对的键。Headers.values()
:返回一个迭代器
,允许你遍历此对象中包含的所有键/值对的值。
须知
headers
是一个异步函数,返回一个 promise。你必须使用async/await
或 React 的use
函数。- 在版本 14 及更早版本中,
headers
是一个同步函数。为了向后兼容,你在 Next.js 15 中仍然可以同步访问它,但这种行为将在未来被废弃。
- 在版本 14 及更早版本中,
- 由于
headers
是只读的,你不能set
或delete
传出请求头。 headers
是一个动态 API,其返回值不能提前知道。在路由中使用它将使该路由选择**动态渲染**。
示例
使用 Authorization 标头
jsx
import { headers } from 'next/headers'
export default async function Page() {
const authorization = (await headers()).get('authorization')
const res = await fetch('...', {
headers: { authorization }, // 转发 authorization 标头
})
const user = await res.json()
return <h1>{user.name}</h1>
}
版本历史
版本 | 变更 |
---|---|
v15.0.RC | headers 现在是一个异步函数。提供了一个 codemod。 |
v13.0.0 | 引入 headers 。 |