/// <summary> /// Invokes middleware for each request /// </summary> public async Task Invoke(HttpRequest request, HttpResponse response, MiddlewareResultHandler setResult) { if (AllowCredentials) { response.AdditionalHeaders.Add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true"); } if (!string.IsNullOrEmpty(AllowedOrigins)) { if (AllowedOrigins == "*") { response.AdditionalHeaders.Add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, request.Headers.ContainsKey(HttpHeaders.ORIGIN) ? request.Headers[HttpHeaders.ORIGIN] : "*"); } else { response.AdditionalHeaders.Add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, AllowedOrigins); } } if (request.Method.Equals(HttpHeaders.HTTP_OPTIONS, StringComparison.InvariantCultureIgnoreCase)) { if (!string.IsNullOrEmpty(AllowedHeaders)) { response.AdditionalHeaders.Add(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, AllowedHeaders); } if (!string.IsNullOrEmpty(AllowedMethods)) { response.AdditionalHeaders.Add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, AllowedMethods); } if (!string.IsNullOrEmpty(AllowMaxAge)) { response.AdditionalHeaders.Add(HttpHeaders.ACCESS_CONTROL_MAX_AGE, AllowMaxAge); } setResult(StatusCodeResult.NoContent()); } await Task.CompletedTask; }