Bonjour,
suite à une intrusion sur le WordPress de l'un de mes clients, il m'a fallu sécuriser ce site au maximum. J'ai donc appliqué un certains nombres de règles de sécurité trouvées sur le Web afin d'éviter une nouvelle intrusion.
Ce module sert à publier des pubs, lorsqu'on clique sur cette pub, le contenu cible de ce lien est censé être chargé dans une modal.
Malheureusement, le contenu ne charge jamais à cause d'une erreur JS.
Voici ce que la console de Firefox me renvoie suite à cette requête.

Une demande multi-origines (Cross-Origin Request) a été bloquée : la politique « Same Origin » ne permet pas de consulter la ressource distante située sur http://www.mesvacances-iledere.com/. Ceci peut être corrigé en déplaçant la ressource sur le même domaine ou en activant CORS.

6 réponses


L'erreur est claire : il est interdit de faire une requête ajax sur un autre domaine. (ex grafikart.fr ne peux pas faire une requête ajax sur google.fr). Il faut donc soit déplacer tes fichiers sur le même domaine qui effectue les requêtes ajax, soit configurer le serveur ou se situent tes pubs pour qu'il accepte les requêtes de ton domaine.

SacreOl
Auteur

Effectivement, mais ça vient ne vient pas des sites vers lesquelles je pointe puisque ça fonctionnait avant mon intervention.
J'ai donc forcément dû modifier une configuration qui empêche de récupérer quoi que ce soit qui ne provienne pas du site...

Re. Donc la cross origin request est une sécurité activée par défaut sur tout les navigateurs. Tu peux les configurer par exemple pour apache via ceci dans un .htaccess sur le site vers lequel tu effectue tes requêtes :

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

sinon en php (ou autre) tu peux envoyer ce header de la même manière

SacreOl
Auteur

eh oui, mais malheureusement, jai dejà indiqué ces instructions dans les directives http de apache. mais malheureusement, ca nen fonctionne pas pour autant...
c´est à n'y rien comprendre.

SacreOl
Auteur

Bonjour,
Je me suis rendu compte que je ne prenais pas vraiment le problème dans le bon sens.
Moi j'ai le site d'un client A qui effectue, via le plugin WordPress "Simple Ads Manager", des requêtes vers différents sites, (B, C, D etc...)
Ce plugin fonctionnait très bien avant que je mette en place tout un tas de règles de sécurité WordPress, trouvées un peu partout sur le web.
C'est depuis lors que mes requêtes sont refusées par la politique "Same Origin" de CORS.

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

J'ai effectivement tenté d'ajouter le code ci-dessus dans les directives APACHE du site A.
Mais j'ai l'impression que c'est une directive à ajouter plutôt dans la configuration APACHE des sites vers lesquelles vont mes requêtes.
Je ne suis pas sûr de bien comprendre tout ça.
Ça fonctionnait avant, et je ne suis intervenu que sur le site A.
Pourquoi faudrait-il maintenant configurer des domaines qui ne m'appartiennent même pas ?

Salut ! Alors en effet il faut mettre ces règles sur les autres sites (B, C, D, ...). Si tu n'as pas accès à ces sites c'est simple : tu ne pourras pas faire de requêtes ajax vers ces sites. Cela n'a rien à voir avec ton application, de mon côté si je faisais une requête XMLHttpRequest vers google par exemple ça ne marcherait pas, c'est une règle de sécurité élementaire des navigateurs. La seule chose que je vois est d'inclure directement ces élements dans ta page. Par exemple s'il s'agit d'image, chercher à créer une balise img et modifier directement l'attribut src.