onRequest method

  1. @override
FutureOr<HttpControllerBehavior> onRequest(
  1. HttpRequest request
)
override

Implementation

@override
FutureOr<HttpControllerBehavior> onRequest(HttpRequest request) {
  if (!allowedMethods.contains(request.method)) {
    request.response.methodNotAllowed();
    return HttpControllerBehavior.revoke();
  }

  final corsHeaders = {
    'Access-Control-Expose-Headers': [exposeHeaders],
    'Access-Control-Allow-Credentials': ['$allowCredentials'],
    'Access-Control-Allow-Origin': allowedOrigins.toList(),
    'Access-Control-Max-Age': [maxAge.inSeconds.toString()],
    'Access-Control-Allow-Headers': [allowedHeaders.join(',')],
    'Access-Control-Allow-Methods': [allowedMethods.join(',')],
  };

  for (final header in corsHeaders.entries) {
    request.response.headers.set(header.key, header.value);
  }

  if (request.method == 'OPTIONS') {
    request.response.statusCode = 204;
    request.response.close();
    return HttpControllerBehavior.revoke();
  }

  return HttpControllerBehavior.next();
}