asphost 2应用程序在localhost上,单独的端口CORS问题

时间:2015-09-23 10:28:16

标签: asp.net angularjs asp.net-web-api

我有一个在一个端口上运行的Web API,在WebApiConfig中我有这个:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.EnableCors(new EnableCorsAttribute("*", "*", "*")); // Enable CORS globally

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        // Web API configuration and services
        var formatters = config.Formatters;
        var jsonFormatter = formatters.JsonFormatter;

        jsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html")); // Allow xml only when text/html is specified
        jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); // Make json return as camel case
        jsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; // Ignore loops
        jsonFormatter.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.None; // Preserve

        formatters.Remove(config.Formatters.XmlFormatter); // Remove xml formatting
    }
}

如您所见,我从任何地方的任何地方启用CORS。 我的 OAuthAuthorizationServerProvider 也在我的GrantResourceOwnerCredentials方法中进行了设置:

var allowedOrigin = context.OwinContext.Get<string>("as:clientAllowedOrigin");

if (string.IsNullOrEmpty(allowedOrigin))
{
    allowedOrigin = "*";
}

我的第二个应用是使用角度JS的SPA。它大部分时间都有效,但我经常遇到这个错误:

  
    

XMLHttpRequest无法加载http://localhost:54326/token。 No&#39; Access-Control-Allow-Origin&#39;标头出现在请求的资源上。起源&#39; http://localhost:52475&#39;因此不允许访问。响应具有HTTP状态代码502.

  

我在某处读到了我必须配置角$ http请求,所以我将其添加到应用配置中:

// CORS stuff
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common["X-Requested-With"];

不确定它在做什么,但无论如何这还没有解决问题。 有谁知道是什么导致了这个问题以及如何解决它?

0 个答案:

没有答案