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であることを確認します。
あらかじめコミュニティに感謝します!