私は異なるポートのロカホストでテストするAspコアWeb APIを使用してAngular 4アプリを使用しています。 WebApiにはWindows認証が必要です(ログオンユーザー名を取得する必要があります)。 GETを使用しているすべての呼び出しが機能しますが、残念ながらPOSTを動作させることはできません。Asp.netコアCORSはGETで動作しますがPOSTは使用しませんPOST
のXMLHttpRequestがhttp://localhost:495/api//uploadをロードすることはできません。
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddApplicationInsightsTelemetry(Configuration);
services.AddDbContext<CatalogContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddCors(options =>
{
options.AddPolicy("AllowAll", builder =>
{
builder.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
services.AddMvc();
}
と角4クライアントがファイルに
fileChange(event) {
let fileList: FileList = event.target.files;
if (fileList.length > 0) {
let file: File = fileList[0];
let formData: FormData = new FormData();
formData.append('uploadFile', file, file.name);
let headers = new Headers();
/** No need to include Content-Type in Angular 4 */
headers.append('Content-Type', 'multipart/form-data');
headers.append('Accept', 'application/json');
let options = new RequestOptions({ headers: headers, withCredentials: true });
this.http.post("http://localhost:495/api//upload",formData, options)
.map(res => res.json())
.catch(error => Observable.throw(error))
.subscribe(
data => console.log('success'),
error => console.log(error)
)
}
私の誤りを投稿しようとしている:私は、CORSのためWEBAPIを設定しています。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。 Origin 'http://localhost:4200'はアクセスできません。応答は、HTTPステータスコード500
と応答ヘッダを持っていた
のContent-Length:0 日:日、2017年8月13日午前13時13分09秒GMT 永続-AUTH:真 サーバー:チョウゲンボウ X -Poweredバイ:ASP.NET X-、ソースファイル:????= UTF-8 B QzpcU291cmNlIENvZGVcUGFydG5lcnNoaXBDYXRhbG9nXFBhcnRuZXJzaGlwQ2F0YWxvZ1xQYXJ0bmVyc2hpcENhdGFsb2cuV2ViQXBpXGFwaVx1cGxvYWQ = =
任意の助けをいただければ幸いです!
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder =>
builder.AllowAnyOrigin()
.AllowAnyMethod()
.WithExposedHeaders("content-disposition")
.AllowAnyHeader()
.AllowCredentials()
.SetPreflightMaxAge(TimeSpan.FromSeconds(3600)));
});
お知らせAllowCredentials()
:
チェックhttp://enable-cors.org。それはあなたがcorsを追加しているように動作していないように見えます。 http要求のクロムネットワークタブを確認してください。要求を個別にクリックすると、要求と応答の詳細が表示されます。あなたのアプリケーションを呼び出す代わりに、郵便配達員や先進の休憩のようなフィドラーやクロムの拡張機能で確認してください。個々のクラス、メソッド、またはweb.configで個別に有効にすることもできます。 – Amit
例外のスタック/メッセージを投稿してください。 ASP.NET Coreの例外が発生すると、例外ミドルウェアは**ヘッダーをクリアします**ので、CORSヘッダーが失われます。何が例外を引き起こして例外を解決したら、それはうまくいくはずです。例外が発生したときにHttpコード500が返されます。 – Tseng
'UserCors'が' Configure'メソッドの 'UseMvc'呼び出しの前にあることを確認できますか? – regnauld