Crow/docs/guides/included-middleware.md
Vladislav Oleshko 84effa5840 Update docs
2022-05-07 12:09:22 +03:00

1.9 KiB

Crow contains some middlewares that are ready to be used in your application.
Make sure you understand how to enable and use middleware.

Cookies

Include: crow/middlewares/cookie_parser.h
Examples: examples/middlewars/example_cookies.cpp

This middleware allows to read and write cookies by using CookieParser. Once enabled, it parses all incoming cookies.

Cookies can be read and written with the middleware context. All cookie attributes can be changed as well.

auto& ctx = app.get_context<crow::CookieParser>(request);
std::string value = ctx.get_cookie("key");
ctx.set_cookie("key", "value")
    .path("/")
    .max_age(120);

!!! note

Make sure `CookieParser` is listed before any other middleware that relies on it.

CORS

Include: crow/middlewares/cors.h
Examples: examples/middlewars/example_cors.cpp

This middleware allows to set CORS policies by using CORSHandler. Once enabled, it will apply the default CORS rules globally.

The CORS rules can be modified by first getting the middleware via #!cpp auto& cors = app.get_middleware<crow::CORSHandler>();. The rules can be set per URL prefix using prefix(), per blueprint using blueprint(), or globally via global(). These will return a CORSRules object which contains the actual rules for the prefix, blueprint, or application. For more details go here.

CORSRules can be modified using the methods origin(), methods(), headers(), max_age(), allow_credentials(), or ignore(). For more details on these methods and what default values they take go here.

auto& cors = app.get_middleware<crow::CORSHandler>();
cors
  .global()
    .headers("X-Custom-Header", "Upgrade-Insecure-Requests")
    .methods("POST"_method, "GET"_method)
  .prefix("/cors")
    .origin("example.com");