Skip to content
oRPC
Esc
navigateopen⌘Jpreview
On this page

Request Headers Plugin

Use RequestHeadersHandlerPlugin to expose incoming request headers as context.reqHeaders.

Context Access

import { function getCookie(headers: Headers | undefined, name: string, options?: GetCookieOptions): string | undefined
Gets a cookie value from request headers Returns `undefined` if the cookie is not found or headers are `undefined`.
@example```ts const headers = new Headers({ 'Cookie': 'sessionId=abc123; theme=dark' }) const sessionId = getCookie(headers, 'sessionId') expect(sessionId).toEqual('abc123') ```@see{@link https://orpc.dev/docs/helpers/cookie Cookie Helpers}
getCookie
} from '@orpc/server/helpers'
import type { RequestHeadersHandlerPluginContext } from '@orpc/server/plugins' interface ServerContext extends RequestHeadersHandlerPluginContext {} const const base: Builder<ServerContext & object, Record<never, never>>base = const os: Builder<DefaultInitialContext & object, Record<never, never>>
The oRPC procedure builder. Chain methods like `.input`, `.use`, and `.handler` to define procedures, then compose them into routers.
@see{@link https://orpc.dev/docs/procedure Procedure}
os
.Builder<DefaultInitialContext & object, Record<never, never>>.$context<ServerContext>(): Builder<ServerContext & object, Record<never, never>>$context<ServerContext>()
const
const example: DecoratedProcedure<ServerContext & object, object, InitialInputSchema, Schema<{
    userAgent: string | null | undefined;
}>, Record<never, never>, never>
example
= const base: Builder<ServerContext & object, Record<never, never>>base
.Builder<ServerContext & object, Record<never, never>>.use<object, ServerContext & object, Record<never, never>>(middleware: Middleware<ServerContext & object, object, unknown, unknown, Record<never, never>>): BuilderWithMiddlewares<ServerContext & object, object, Record<never, never>>use(({ context: ServerContext & objectcontext, next: MiddlewareNext<unknown>
Invoke to continue the middleware chain.
next
}) => {
const const sessionId: string | undefinedsessionId = function getCookie(headers: Headers | undefined, name: string, options?: GetCookieOptions): string | undefined
Gets a cookie value from request headers Returns `undefined` if the cookie is not found or headers are `undefined`.
@example```ts const headers = new Headers({ 'Cookie': 'sessionId=abc123; theme=dark' }) const sessionId = getCookie(headers, 'sessionId') expect(sessionId).toEqual('abc123') ```@see{@link https://orpc.dev/docs/helpers/cookie Cookie Helpers}
getCookie
(context: ServerContext & objectcontext.RequestHeadersHandlerPluginContext.reqHeaders?: Headers | undefined
Request headers as a Headers instance. This is injected by the Request Headers Plugin.
reqHeaders
, 'session_id')
return
next: MiddlewareNext
<object>(options?: {
    context?: object | undefined;
} | undefined) => MiddlewareResult<object, unknown>
Invoke to continue the middleware chain.
next
()
}) .
BuilderWithMiddlewares<ServerContext & object, object, Record<never, never>>['handler']<{
    userAgent: string | null | undefined;
}>(handler: ProcedureHandler<ServerContext & object, unknown, {
    userAgent: string | null | undefined;
}, ORPCErrorConstructorMap<Record<never, never>>>): DecoratedProcedure<ServerContext & object, object, InitialInputSchema, Schema<{
    userAgent: string | null | undefined;
}>, Record<never, never>, never>
handler
(({ context: ServerContext & objectcontext }) => {
const const userAgent: string | null | undefineduserAgent = context: ServerContext & objectcontext.RequestHeadersHandlerPluginContext.reqHeaders?: Headers | undefined
Request headers as a Headers instance. This is injected by the Request Headers Plugin.
reqHeaders
?.Headers.get(name: string): string | null
The **`get()`** method of the Headers interface returns a byte string of all the values of a header within a Headers object with a given name. If the requested header doesn't exist in the Headers object, it returns null. [MDN Reference](https://developer.mozilla.org/docs/Web/API/Headers/get)
get
('user-agent')
return { userAgent: string | null | undefineduserAgent } })

Handler Setup

import { RequestHeadersHandlerPlugin } from '@orpc/server/plugins'

const handler = new RPCHandler(router, {
  plugins: [
    new RequestHeadersHandlerPlugin(),
  ],
})

Learn More

For implementation details, see the source code.

Last updated on August 6, 2026

Was this page helpful?