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 | undefinedGets a cookie value from request headers
Returns `undefined` if the cookie is not found or headers are `undefined`.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.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 | undefinedGets a cookie value from request headers
Returns `undefined` if the cookie is not found or headers are `undefined`.getCookie(context: ServerContext & objectcontext.RequestHeadersHandlerPluginContext.reqHeaders?: Headers | undefinedRequest 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 | undefinedRequest headers as a Headers instance. This is injected by the Request Headers Plugin.reqHeaders?.Headers.get(name: string): string | nullThe **`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.