Esempio n. 1
0
        /// <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;
        }