我有一个在一个端口上运行的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"];
不确定它在做什么,但无论如何这还没有解决问题。 有谁知道是什么导致了这个问题以及如何解决它?