Windows認証を有効にして、バックエンドでASP.NET web api 2で角度4を使用しています。私は1つの投稿を持ち、1つはapiを取得します。 GETは正常に動作します。しかし、POSTのために、私はプリフライトのために、このエラー角度4のHTTP POST with Windows認証のプリフライトの問題
応答が無効なHTTPステータスコード私は、理由OPTIONSケースではありません知っている私は、OPTIONSメソッドの不正のエラーを取得しています意味401
を持って取得していますメソッドがユーザーの資格情報で呼び出されることはありません。また、私はweb.configファイルの私の認証ブロックに次き
<add name="Access-Control-Expose-Headers " value="WWW-Authenticate"/>
<add name="Access-Control-Allow-Origin" value="http://localhost:4200" />
<add name="Access-Control-Allow-Headers" value="accept, authorization, Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
<add name="Access-Control-Allow-Credentials" value="true" />
を次のように私は私のウェブの設定で、すべてのCORSヘッダーを設定している
let requestOptions = new RequestOptions({
withCredentials: true,
headers: new Headers({
'content-type': 'application/json'
})
})
this.http.post("someapiendpoint", JSON.stringify(data), requestOptions).subscribe(data => {
debugger;
});
を次のように私は、APIを呼び出していた角度で
私は を削除しようとした <authentication>
<anonymousAuthentication enabled="false" userName="" />
<basicAuthentication enabled="false" />
<clientCertificateMappingAuthentication enabled="false" />
<digestAuthentication enabled="false" />
<iisClientCertificateMappingAuthentication enabled="false">
</iisClientCertificateMappingAuthentication>
<windowsAuthentication enabled="true">
<providers>
<add value="Negotiate" />
<add value="NTLM" />
</providers>
</windowsAuthentication>
</authentication>
続き
headers: new Headers({
'content-type': 'application/json'
})
私の角度コードからWeb APIのための私のコントローラのコード
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.DirectoryServices;
using System.DirectoryServices.AccountManagement;
namespace Backend.Controllers
{
public class DemoController : ApiController
{
Entities db = new Entities();
public DemoController()
{
}
[HttpPost]
[ActionName("postevent")]
public IHttpActionResult PostEvent(Demo data)
{
db.Demos.Add(data);
db.SaveChanges();
return Ok();
}
}
}
ですが、それは助けにはなりませんでした。私も 'text/html'と置き換えようとしましたが、うまくいきませんでした。ある人が私に何が間違っているか教えてもらえますか? GETのために働いているとうまくいくはずです。
どのWeb APIシステムを使用していますか? –
C#Web API 2.0の場合、 '[HttpPost]'属性を指定してpostメソッドを宣言する必要があります。 –
@BaileyMillerはいこれを行い、アクション名とルートを追加しました –