Skip to main content

origin_and_security_headers

Function origin_and_security_headers 

Source
pub async fn origin_and_security_headers(
    __arg0: State<AppState>,
    request: Request<Body>,
    next: Next,
) -> Response
Expand description

Reject cross-site state-changing browser requests and protect public Demo/private API responses.

Demo mode requires the exact configured Origin on every state-changing request. Full mode retains CLI/curl compatibility, accepts a browser-controlled same-origin request from the Vite development proxy when no explicit origin pin is configured, and otherwise requires either the explicitly configured Origin or an automatic same-host match. This middleware never emits CORS response headers.

Baseline browser protections apply to every response. Demo responses additionally receive private/no-index caching headers on every path, including the embedded SPA; Full mode receives those privacy headers on /api only so immutable static-asset caching is preserved. Full mode’s existing Scalar documentation page is the sole CSP exception because its upstream HTML loads the Scalar bundle from jsDelivr; Demo mode does not expose that page.