httpCorsHandler function

void httpCorsHandler(
  1. bool? enabled,
  2. HttpRequest req
)

Implementation

void httpCorsHandler(bool? enabled, HttpRequest req) {
  CORSConfig cors = Dox().config.cors;
  if (!(enabled ?? cors.enabled)) return;
  HttpResponse res = req.response;

  /// call each one directly, no map per request.
  /// null values are skipped inside `_setCorsValue`.
  if (cors.origin is List) {
    /// the answer depends on the request Origin, so caches must know it.
    res.headers.add(HttpHeaders.varyHeader, 'Origin');
  }
  _setCorsValue(
    res,
    HttpHeaders.accessControlAllowOriginHeader,
    corsAllowOrigin(cors.origin, req.headers.value('origin')),
  );
  _setCorsValue(res, HttpHeaders.accessControlAllowMethodsHeader, cors.methods);
  _setCorsValue(res, HttpHeaders.accessControlAllowHeadersHeader, cors.headers);
  _setCorsValue(
    res,
    HttpHeaders.accessControlExposeHeadersHeader,
    cors.exposeHeaders,
  );
  _setCorsValue(
    res,
    HttpHeaders.accessControlAllowCredentialsHeader,
    cors.credentials,
  );
  _setCorsValue(res, HttpHeaders.accessControlMaxAgeHeader, cors.maxAge);
}