0
我有一個奇怪的問題,我一直無法找到答案。.NET Web API CORS不適用於所有路由
我在我的Web API應用程序中多次使用CORS,以允許來自客戶端應用程序的跨源請求而不會看到此問題。
在我WebApiConfig I類有:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
}
}
我有三個控制器方法與屬性的路由:
[HttpPost]
[Route("pedigree")]
public IHttpActionResult GetPedigree([FromBody]Input input)
{
// some stuff
return Ok(result);
}
[HttpPost]
[Route("descendants")]
public IHttpActionResult GetDescendants([FromBody]Input input)
{
// some stuff
return Ok(result);
}
[HttpPost]
[Route("relatives")]
public IHttpActionResult GetRelatives([FromBody]Input input)
{
// some stuff
return Ok(person);
}
前兩種方法做工精細,並返回數據。第三個沒有,它與CORS失敗:
XMLHttpRequest無法加載http://localhost:21870/api/familysearch/relatives。請求的資源上沒有「Access-Control-Allow-Origin」標題。因此不允許訪問原產地'http://localhost:8080'。響應有HTTP狀態代碼500。
我只是從角度做出一個Ajax請求的三種方法:
$http.post('http://localhost:21870/api/familysearch/relatives', postData)
.then(function (response) {
// do something
}).catch(function (e) {
// do something
});
人有什麼想法?
感謝您的意見,我確實嘗試過,但沒有區別。無論如何,我的webapiconfig中的enablecors在所有控制器和方法中都應該是全局的。 – Starscream1984