Lorsque je configure CORS dans mon web.config comme suit, tout fonctionne:CORS multiples travaillant pour GET, mais pas pour PUT/POST avec les requêtes prévol Web api 2
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://localhost:3000"/>
<add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, HEAD, OPTIONS"/>
<add name="Access-Control-Allow-Headers" value="accept, cache-control, credentials, content-type, authorization, origin, X-Requested-With, X-dev-mode"/>
</customHeaders>
Cependant, lorsque je tente pour permettre à plusieurs CORS comme ceci:
// Filename: Global.asax.cs
protected override void Application_Start()
{
ApiConfig.Register(GlobalConfiguration.Configuration);
}
// Filename: ApiConfig.cs
public static void Register(HttpConfiguration config)
{
var cors = new EnableCorsAttribute("http://localhost:3000,http://someOtherUrl.com/", "*", "*");
config.EnableCors(cors);
}
il travaille pour la console GET (ie obtenir le contenu, etc.) mais, lors de l'utilisation POST/PUT (c.-à-enregistrement de contenu, etc.), il donne cette erreur dans le navigateur (Chrome)
L'API de récupération ne peut pas charger http://localhost:56214/api/1/content/SAVE. La réponse à la demande de contrôle en amont ne passe pas la vérification du contrôle d'accès: aucun en-tête «Access-Control-Allow-Origin» n'est présent sur la ressource demandée. L'origine 'http://localhost:3000' n'est donc pas autorisée. Si une réponse opaque répond à vos besoins, définissez le mode de la requête sur 'no-cors' pour récupérer la ressource avec CORS désactivé.
La demande échoue sur OPTIONS. Veuillez noter que j'ai des gestionnaires personnalisés et mes itinéraires sont également configurés. Encore une chose à mentionner est que l'appel PUT/POST pour enregistrer le contenu est un appel ajax via réagir. Cela peut-il être un problème?