corsMiddleware function

Middleware corsMiddleware()

Implementation

Middleware corsMiddleware() {
  return (EngineContext ctx, Next next) async {
    final config = ctx.engineConfig.security.cors;

    if (!config.enabled) {
      return next();
    }

    final requestHeaders = ctx.request.headers;
    final requestMethod = ctx.request.method;
    final responseHeaders = ctx.response.headers;

    final allowed = applyCorsHeaders(
      requestHeaders,
      requestMethod,
      responseHeaders,
      config,
    );

    if (!allowed) {
      return ctx.string(
        'CORS origin check failed.',
        statusCode: HttpStatus.forbidden,
      );
    }

    if (requestMethod == 'OPTIONS') {
      return ctx.string('', statusCode: HttpStatus.noContent);
    }

    return next();
  };
}