私は答えが見つからないという奇妙な問題があります。.NET Web API CORSがすべてのルートで機能しない
Web APIアプリケーションでCORSを何度も使用して、この問題が発生していないクライアントアプリケーションからのクロスオリジン要求を許可しています。
私が持っている私のWebApiConfigクラスで:
[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);
}
を最初の2つの方法が正常に動作し、データを返す:
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);
}
}
私は、ルーティング属性を持つ3つのコントローラメソッドを持っています。 3番目はCORSに失敗します。
XMLHttpRequestはhttp://localhost:21870/api/familysearch/relativesをロードできません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。 Origin 'http://localhost:8080'はアクセスできません。応答は、HTTPステータスコード500
を持っていた私は単純にすべての3つのメソッドのための角度からAJAX要求を作っています:
$http.post('http://localhost:21870/api/familysearch/relatives', postData)
.then(function (response) {
// do something
}).catch(function (e) {
// do something
});
誰もが任意のアイデアがありますか?
入力いただきありがとうございますが、私はそれを試しましたが、違いはありません。とにかく、私のwebapiconfigのenablecorsは、すべてのコントローラとメソッドでグローバルにする必要があります。 – Starscream1984