J'utilise Angular et asp.net API. Le problème auquel je suis confronté: lorsque j'ajoute CORS dans le code de l'API, cela fonctionne sur Internet Explorer mais pas sur Chrome et Firefox.
Voici l'erreur:
XMLHttpRequest ne peut pas charger http: // localhost: 41028/api/values / abc . Le L'en-tête 'Access-Control-Allow-Origin' contient plusieurs valeurs '*, *', mais un seul est autorisé. Origin ' http: // localhost: 44796 ' est donc accès non autorisé.
C'est le code que j'ai ajouté dans le fichier 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>
Dans le fichier WebApiConfigFile.cs
j'ai ajouté:
var CorsAttribute = new EnableCorsAttribute("* ","* ", "* ");
config.EnableCors(CorsAttribute);
J'utilise CORS pour la première fois. Toute aide serait appréciée.
Vous définissez CORS deux fois. Je pense que c'est le problème.
Veuillez supprimer tout paramètre CORS. Vous pouvez le supprimer de web.config
ou de WebApiConfigFile.cs
.
Chrome et Firefox utilisent ce que l’on appelle une vérification avant vol à l’aide du verbe "OPTIONS".
Donc, vous devez ajouter "OPTIONS" aux méthodes autorisées dans le fichier web.config. Vous devrez peut-être aussi ajouter du code à la demande Application_Begin, comme le suggère cette réponse: Gestion des demandes de contrôle en amont CORS pour les actions ASP.NET MVC
Voici quelques ressources pour la SCRO:
IIS détourne la demande d'OPTIONS de contrôle en amont de CORS
http://www.asp.net/web-api/overview/security/enabling-cross-Origin-requests-in-web-api
Toutes les autres solutions fournies pour webAPI. Cette solution est destinée à l'utilisation de Webservice (.asmx) en tant qu'API.
Supprimez les détails 'Access-Control-Allow-Origin' de la fonction begin_request du fichier Global.asax.cs ou de web.config. Parce que ce paramètre doit être dans un seul endroit
J'ai eu ce problème parce que j'ai mis le app.UseCors
après ConfigureOAuth
. Changer l'ordre résoudre le problème.
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);
}
Voici le détail dans mon cas:
\token
.\token
.J'ai eu le même problème. Après avoir mis le domaine exact au lieu de * (voir ci-dessous), cela a fonctionné pour moi.
var CorsAttribute = new EnableCorsAttribute (" https://www.mywebsite.com ", "", ""); config.EnableCors (CorsAttribute);