J'essaie de faire une requête HTTP interdomaine au service WCF (que je possède). J'ai lu plusieurs techniques pour travailler avec les limitations de scripts interdomaines. Étant donné que mon service doit accueillir à la fois les requêtes GET et POST, je ne peux pas implémenter une balise de script dynamique dont le src est l'URL d'une requête GET. Étant donné que je suis libre d'apporter des modifications au serveur, j'ai commencé à essayer de mettre en œuvre une solution de contournement qui consiste à configurer les réponses du serveur pour inclure l'en-tête "Access-Control-Allow-Origin" et les demandes de contrôle en amont avec et OPTIONS request. J'ai eu l'idée de ce post: faire fonctionner CORS
Du côté serveur, ma méthode Web ajoute «Access-Control-Allow-Origin: *» à la réponse HTTP. Je peux voir que les réponses incluent maintenant cet en-tête. Ma question est la suivante: Comment puis-je effectuer le «contrôle en amont» d'une demande (OPTIONS)? J'utilise jQuery.getJSON pour faire la demande GET mais le navigateur annule la demande tout de suite avec le tristement célèbre:
Origin http: // localhost n'est pas autorisé par Access-Control-Allow-Origin
Quelqu'un est-il familier avec cette technique CORS? Quels changements doivent être apportés au client pour contrôler en amont ma demande?
Merci!
la source
Access-Control-Allow-Origin: *
//cors and preflight filtering app.all('*', function(req, res, next){.. //preflight needs to return exact request-header res.set('Access-Control-Allow-Headers', req.headers['access-control-request-headers']); if ('OPTIONS' == req.method) return res.send(204);next(); });
Bien que ce fil remonte à 2014, le problème peut toujours être d'actualité pour beaucoup d'entre nous. Voici comment je l'ai traité dans un contexte jQuery 1.12 / PHP 5.6:
Exemple de code PHP:
En particulier, n'ajoutez pas un
exit;
car aucun contrôle en amont n'est nécessaire.la source