1
Web APIでCORを有効にしましたが、ChromeではGETリクエストとPOSTリクエストの両方が失敗しますが、MS EdgeブラウザではGETリクエストは問題なく動作しますが、POSTリクエストを試みるとCORs Web API 2.0でのリクエスト
無効な 構文のため、要求をサーバーで処理できませんでした。
XMLHttpRequest:ネットワークエラー0x80070005、アクセスが拒否されました。
ポストのコードは、クロスドメイン有効にした標準のAjaxリクエストです:
$.ajax({
type: "POST",
crossDomain: true,
url: 'http://localhost:50915/api/addjob',
data: JSON.stringify(Job),
contentType: "application/json;charset=utf-8",
success: function (data, status, xhr) {
alert("The result is : " + status + ": " + data);
},
error: function (xhr) {
alert(xhr.responseText);
}
});
とWeb API側で私はCORS Nugetパッケージをインストールし、コードを有効にするには、以下のものを追加しました:
WebApiConfig.cs
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
config.EnableCors();
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var JsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().FirstOrDefault();
if (JsonFormatter != null)
JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
}
とコントローラ:
[System.Web.Http.HttpPost]
[System.Web.Http.Route("api/addjob")]
[EnableCors(origins: "http://localhost", headers: "*", methods: "*")]
public void AddJob([FromBody] Job job)
{
using (_tmsPortalDb)
{
_tmsPortalDb.Jobs.Add(job);
_tmsPortalDb.SaveChanges();
}
}
URLはどちらもローカルホストですが、異なるポートで実行されていますが、同じVSソリューション内に別々のプロジェクトとして存在します。 CORサポートの私の理解は、ローカルホストのデバッグの問題を解決するはずです。私が見逃したことはありますか?
ちょうど野生の推測と私の角度アプリでconfigです:あなたのWebアプリケーションのホストのポートを追加したらどう? '[EnableCors(オリジン:" http:// localhost:SomeOthePort "、ヘッダー:" * "、メソッド:" * ")]' –