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を初めて使用します。任意の助けをいただければ幸いです。
CORSを2回設定しています。それが問題だと思います。
1つのCORS設定を削除してください。 web.config
またはWebApiConfigFile.cs
から削除できます。
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
WebAPIに提供される他のすべてのソリューション。このソリューションは、webservice(.asmx)をAPIとして使用する場合に適しています
Global.asax.csファイルのbegin_request関数またはweb.configから「Access-Control-Allow-Origin」の詳細を削除します。この設定は1か所のみである必要があるため
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);
}
私の場合の詳細は次のとおりです。
\token
を呼び出すと、Originは許可されませんでした。\token
リクエストを修正しました。同じ問題がありました。 *(以下を参照)の代わりに正確なドメインを配置した後、それは私のために働いた。
var CorsAttribute = new EnableCorsAttribute( " https://www.mywebsite.com "、 ""、 ""); config.EnableCors(CorsAttribute);