2017-10-02 6 views
0

私の角型アプリケーションとMVC Web APIアプリケーションの間の問題の原因を突き止めようとしています。次のように私のwebapiconfig.csでは、私はCORSをAngular 4 appとMVC WebAPIの間のPUTリクエストでCORSエラーが発生する

を有効にしています:

var corsAttr = new EnableCorsAttribute("http://localhost:4200,http://domain1,http://domain2", "*", "*"); 
corsAttr.SupportsCredentials = true; 

// Enable CORS Globally 
config.EnableCors(corsAttr); 

私のような何か使用してPUTリクエストを行っております:

updateExchange(exchange: IOrder): Observable<IOrder> { 
    return this._http.put<IOrder>(this._orderServiceUrl + '/' + order.Id, order) 
    .do(this.handleSuccessResponse) 
    .catch(this.handleErrorResponse); 
} 

を、私はこの問題であれば、私の中には本当にわからないんだけど私は時々エラーに基づいて別のステータスコードを返すことを要求します。

Response to preflight request doesn't pass access control check: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. Origin ' http://localhost:4200 ' is therefore not allowed access. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute.

は私が成功した応答を返す取得していますが、レスポンスヘッダに、私は、任意のCORSヘッダが表示されない:

Cache-Control:private 
    Date:Mon, 02 Oct 2017 15:37:31 GMT 
    Server:Microsoft-IIS/10.0 
    Transfer-Encoding:chunked 
    X-AspNet-Version:4.0.30319 
    X-Powered-By:ASP.NET 
    X-SourceFiles:=?UTF-8?<something> 

私はこの作業を取得するために何をすべきか上の任意の提案?

答えて

1

応答には、Access-Control-Allow-Headers内の受け入れられたヘッダーのみが必要です。ワイルドカードは使用しないでください。これにはセキュリティ上の懸念があります。そのため、エラーが発生しています。

これが悪い習慣である理由の詳細については、this postの回答を参照してください。それはangular.jsの投稿ですが、CORSのアスペクトが適用されます

+0

私がそこにワイルドカードを持っているのは、そうでなければエラーです:HTTPヘッダーが送信された後、サーバーはステータスを設定できません。 – AlexanderM

+0

Btw、私はOrigins、今のHeadersにしか関心のない答えの一つに添付されたドキュメントから。どちらの方法でも、ここで問題となるのは、応答ヘッダーには、msドキュメントに基づいてすべてが指定されていても(または何かが不足している)ヘッダーが全くないということです。 – AlexanderM

+0

申し分なく、うーん。まあ、それは正しいことはできません、多分あなたのコードの詳細を投稿することができますか?あなたはこの投稿を見てきましたか?https://stackoverflow.com/questions/29709477/server-cannot-set-status-after-http-headers-have-been-sent-web-api-cors – FussinHussin

関連する問題