web-dev-qa-db-ja.com

「Access-Control-Allow-Origin」ヘッダーには複数の値「*、*」が含まれていますが、許可されるのは1つだけです

Angularおよびasp.net APIを使用しています。APIコードにCORSを追加すると、Internet Explorerでは動作しますが、ChromeおよびFirefox。

エラーは次のとおりです。

XMLHttpRequestはロードできません http:// localhost:41028/api/values/abc 。 「Access-Control-Allow-Origin」ヘッダーには複数の値「*、*」が含まれていますが、許可されるのは1つだけです。したがって、Origin ' http:// localhost:44796 'はアクセスを許可されていません。

これは、web.configファイルに追加したコードです。

<system.webServer>
...
<httpProtocol>
  <customHeaders>
      <!-- Adding the following custom HttpHeader will help prevent CORS errors -->
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Headers" value="Content-Type" />
  </customHeaders>
</httpProtocol>
...
</system.webServer>

追加したWebApiConfigFile.csファイルに:

var CorsAttribute = new EnableCorsAttribute("* ","* ", "* ");
        config.EnableCors(CorsAttribute);

CORSを初めて使用します。任意の助けをいただければ幸いです。

24
trigri

CORSを2回設定しています。それが問題だと思います。

1つのCORS設定を削除してください。 web.configまたはWebApiConfigFile.csから削除できます。

39

ChromeとFirefoxは、「OPTIONS」動詞を使用した、プリフライトチェックと呼ばれるものを使用します。

そのため、web.configで許可されているメソッドに「オプション」を追加する必要があります。また、次の回答が示すように、Application_Beginリクエストにコードを追加する必要がある場合があります。 ASP.NET MVCアクションへのCORSプリフライトリクエストの処理

CORSのリソースは次のとおりです。

IISはCORSプリフライトOPTIONSリクエストをハイジャックします

http://www.asp.net/web-api/overview/security/enabling-cross-Origin-requests-in-web-api

3
Karen B

WebAPIに提供される他のすべてのソリューション。このソリューションは、webservice(.asmx)をAPIとして使用する場合に適しています

Global.asax.csファイルのbegin_request関数またはweb.configから「Access-Control-Allow-Origin」の詳細を削除します。この設定は1か所のみである必要があるため

2
Sivashankar

ConfigureOAuthの後にapp.UseCorsを追加したため、この問題が発生しました。順序を変更して問題を修正します。

    public void Configuration(IAppBuilder app)
    {
        HttpConfiguration config = new HttpConfiguration();

        app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
        ConfigureOAuth(app);

        WebApiConfig.Register(config);

        // Used to put this line after ConfigureAuth(app), 
        // app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);

        app.UseWebApi(config);
    }

私の場合の詳細は次のとおりです。

  • 最初に、[Access-Control-Allow-Origin]で\tokenを呼び出すと、Originは許可されませんでした。
  • LSo 'Access-Control-Allow-Origin'、 'Access-Control-Allow-headers'、 'Access-Control-Allow-methods'などのcustomHeaderを追加します。 \tokenリクエストを修正しました。
  • しかし、その後、詳細APIを呼び出すときに重複した「Access-Control-Allow-Origin」が発生しました。 this は修正できなかったなど、多くの提案があります。
0
dichen

同じ問題がありました。 *(以下を参照)の代わりに正確なドメインを配置した後、それは私のために働いた。

var CorsAttribute = new EnableCorsAttribute( " https://www.mywebsite.com "、 ""、 ""); config.EnableCors(CorsAttribute);

0
Alex W.