[Fixes #5016] Perf: Check for OPTIONS before looking for CORS headers

This commit is contained in:
Ajay Bhargav Baaskaran 2016-08-30 11:08:41 -07:00
parent c5d7fa63cc
commit 21236cc98e
1 changed files with 5 additions and 6 deletions

View File

@ -69,15 +69,14 @@ namespace Microsoft.AspNetCore.Mvc.Internal
var request = context.RouteContext.HttpContext.Request; var request = context.RouteContext.HttpContext.Request;
var method = request.Method; var method = request.Method;
if (request.Headers.ContainsKey(OriginHeader))
// Perf: Check http method before accessing the Headers collection.
if (string.Equals(method, PreflightHttpMethod, StringComparison.OrdinalIgnoreCase) &&
request.Headers.ContainsKey(OriginHeader))
{ {
// Update the http method if it is preflight request. // Update the http method if it is preflight request.
var accessControlRequestMethod = request.Headers[AccessControlRequestMethod]; var accessControlRequestMethod = request.Headers[AccessControlRequestMethod];
if (string.Equals( if (!StringValues.IsNullOrEmpty(accessControlRequestMethod))
request.Method,
PreflightHttpMethod,
StringComparison.OrdinalIgnoreCase) &&
!StringValues.IsNullOrEmpty(accessControlRequestMethod))
{ {
method = accessControlRequestMethod; method = accessControlRequestMethod;
} }