headers
headers
함수는 서버 컴포넌트에서 HTTP 수신 요청 헤더를 읽을 수 있게 해줍니다.
headers()
이 API는 Web Headers API (opens in a new tab)를 확장합니다. 읽기 전용이므로, 송신 요청 헤더를 set
/ delete
할 수 없습니다.
app/page.tsx
import { headers } from 'next/headers'
export default function Page() {
const headersList = headers()
const referer = headersList.get('referer')
return <div>Referer: {referer}</div>
}
app/page.js
import { headers } from 'next/headers'
export default function Page() {
const headersList = headers()
const referer = headersList.get('referer')
return <div>Referer: {referer}</div>
}
알아두면 좋은 사항:
API Reference
const headersList = headers()
Parameters
headers
는 매개변수를 받지 않습니다.
Returns
headers
는 읽기 전용 Web Headers (opens in a new tab) 객체를 반환합니다.
Headers.entries()
(opens in a new tab): 이 객체에 포함된 모든 키/값 쌍을 순회할 수 있는iterator
(opens in a new tab)를 반환합니다.Headers.forEach()
(opens in a new tab): 이Headers
객체의 각 키/값 쌍에 대해 제공된 함수를 한 번씩 실행합니다.Headers.get()
(opens in a new tab): 주어진 이름을 가진 헤더의 모든 값을 문자열 시퀀스로 반환합니다.Headers.has()
(opens in a new tab):Headers
객체에 특정 헤더가 포함되어 있는지 여부를 나타내는 boolean 값을 반환합니다.Headers.keys()
(opens in a new tab): 이 객체에 포함된 모든 키를 순회할 수 있는iterator
(opens in a new tab)를 반환합니다.Headers.values()
(opens in a new tab): 이 객체에 포함된 모든 값을 순회할 수 있는iterator
(opens in a new tab)를 반환합니다.
Examples
데이터 페칭과 함께 사용하기
headers()
는 Suspense for Data Fetching과 함께 사용할 수 있습니다.
app/page.js
import { Suspense } from 'react'
import { headers } from 'next/headers'
async function User() {
const authorization = headers().get('authorization')
const res = await fetch('...', {
headers: { authorization }, // 인증 헤더 전달
})
const user = await res.json()
return <h1>{user.name}</h1>
}
export default function Page() {
return (
<Suspense fallback={null}>
<User />
</Suspense>
)
}
IP 주소
headers()
를 사용하여 클라이언트의 IP 주소를 가져올 수 있습니다.
app/page.js
import { Suspense } from 'react'
import { headers } from 'next/headers'
function IP() {
const FALLBACK_IP_ADDRESS = '0.0.0.0'
const forwardedFor = headers().get('x-forwarded-for')
if (forwardedFor) {
return forwardedFor.split(',')[0] ?? FALLBACK_IP_ADDRESS
}
return headers().get('x-real-ip') ?? FALLBACK_IP_ADDRESS
}
export default function Page() {
return (
<Suspense fallback={null}>
<IP />
</Suspense>
)
}
x-forwarded-for
외에도, headers()
는 다음을 읽을 수 있습니다:
x-real-ip
x-forwarded-host
x-forwarded-port
x-forwarded-proto
Version History
Version | Changes |
---|---|
v13.0.0 | headers 도입. |