web-dev-qa-db-ja.com

資格情報フラグは「true」ですが、「Access-Control-Allow-Credentials

AngularJSページからASP.NET Web-API Webサービスに接続しようとすると、次のようになります

資格情報フラグは「true」ですが、「Access-Control-Allow-Credentials」ヘッダーは ''です。資格情報を許可するには、「true」である必要があります。したがって、オリジン ' http:// localhost:221 'はアクセスを許可されません。

       var cors = new EnableCorsAttribute("http://localhost:221", "*","GET,PUT,POST,DELETE");
       config.EnableCors(cors);

このAngularJSを使用する

        $http({
        method: 'GET',
        url: 'http://localhost:1980/api/investors/62632',
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
        withCredentials: true
        //    withCredentials: true,
    }).then(function onUserComplete(response) {
        // this callback will be called asynchronously
        // when the response is available
    }, function onError(response) {
        // called asynchronously if an error occurs
        // or server returns response with an error status.

多くの記事を読んだ後、これをweb.configに追加します

   <httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="http://localhost:221" />
  </customHeaders>
</httpProtocol>

そして私はこのエラーメッセージを受け取ります

「Access-Control-Allow-Origin」ヘッダーには複数の値localhost:221、localhost:221が含まれていますが、許可されているのは1つだけです。したがって、元のlocalhost:221はアクセスを許可されません。

これは一度追加したので意味がありませんが、見つかりませんが、web.configに追加すると、複数回追加されたというエラーが表示されます。私は多くの記事を読みましたが、正しい答えを見つけることができないようです。 Google Chromeを使用しています。今髪を抜いているので助かります。

8
DJB

誰のために、誰がWebApiConfig.csを使用するか:

config.EnableCors(new EnableCorsAttribute("*", "*", "*") { SupportsCredentials = true }); 
25
Roman O

Angular2アプリから.netコアのwebapiをヒットしようとしているときにこの質問に出くわしました。次のように、Startup.csのConfigureメソッドのcors構成にAllowCredentials()を追加する必要がありました。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    ...
    app.UseCors(builder =>
        builder
        .AllowCredentials()
        .WithOrigins("http://localhost:3000"));
    ...
}
2
Nick Rubino

プリフライトリクエストについては、次の方法を試してください。

IIS7でクロスオリジンリソース共有を有効にする

CORSのデバッグを簡単にするには、Chrome拡張PostmanまたはFiddlerを使用します。ヘッダーを2回追加することになりますが、コード全体がないとデバッグが困難です( CORSは、コードを使用してもデバッグが困難です)。

私には、web.config設定とグローバルEnableCors()属性の両方を設定するべきではないようです。これにより、doubleが発生します。

サーバー側にAccess-Control-Allow-Credentialsを追加しているようには見えませんが、AllowCors属性によって追加されている可能性があります。 (私はOWINでCORSを自分で処理することに部分的です)

0
Troels Larsen