2017-03-10 10 views
2

Angular2アプリから呼び出されているIISで実行中の.netコアWebアプリケーション(api)があります。 httpコールは、POSTコールでcontent-typeカスタムヘッダーを設定しているので、最初にオプション要求コールを行います。 IIS(私が前提)はオプション呼び出しで415(サポートされていないメディアタイプ)を返しています。HTTP 415 OPTIONS CORSを使用してAngular 2と.netコアWebアプリケーションをIISで実行しています

IIS(または.netコア)でサポートされているメディアタイプを設定する必要があるのはどこですか?

クライアント要求:角度によって生成フィドラーから

let postparams = { 
    Action: 'DoStuff' 
}; 
let body = JSON.stringify(postparams); 

var headers = new Headers(); 
headers.append('Accept','application/json'); 
headers.append('Content-Type','application/json'); 
let options = new RequestOptions({headers: headers}); 

var url = 'http://localhost:9056/api/resolve'; 
var response = this.http.post(url, body, options).map(res => res.json()); 

オプション要求(415を返す):

OPTIONS http://localhost:9056/api/resolve HTTP/1.1 
Host: localhost:9056 
Connection: keep-alive 
Access-Control-Request-Method: POST 
Origin: http://localhost:8100 
User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36 
Access-Control-Request-Headers: content-type 
Accept: */* 
Referer: http://localhost:8100/ 
Accept-Encoding: gzip, deflate, sdch, br 
Accept-Language: en-GB,en;q=0.8 

フィドラーで動作POSTリクエスト(200を返す):

POST http://localhost:9056/api/resolve HTTP/1.1 
Host: localhost:9056 
Connection: keep-alive 
Content-Length: 26 
Origin: http://localhost:8100 
User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36 
content-type: application/json 
Accept: */* 
Referer: http://localhost:8100/ 
Accept-Encoding: gzip, deflate, br 
Accept-Language: en-GB,en;q=0.8 

{"Action":"DoStuff"} 

content-typeをtext/plainに設定した場合、415が返されます。これはIISで設定する必要がありますまたはreturn typeがapplication/jsonであることを確認します。

あらかじめコミュニティに感謝します!

答えて

1

私は最終的に私の問題はCORSの周りでした。 CORSヘッダーをIIS経由で設定していましたが、.netコアで設定していました。スタートアップが私の問題を解決しました。私は、幸せな日々を傷つけ、他の誰かにいくつかの頭を節約することができた場合はサポートされていないメディアタイプの応答コードは...

public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddApplicationInsightsTelemetry(Configuration); 

     // Needed to add this section, and.... 
     services.AddCors(options => 
     { 
      options.AddPolicy("CorsPolicy", 
       builder => builder.AllowAnyOrigin() 
       .AllowAnyMethod() 
       .AllowAnyHeader() 
       .AllowCredentials()); 
     }); 

     services.AddMvc(); 
    } 

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     // ..... this line 
     app.UseCors("CorsPolicy"); 

     loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
     loggerFactory.AddDebug(); 

     app.UseApplicationInsightsRequestTelemetry(); 

     app.UseApplicationInsightsExceptionTelemetry(); 

     app.UseMvc(); 
    } 

私をオフに投げていました!

関連する問題