IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] Origin is not allowed by Access-Control-Allow-Origin


Sujet :

AJAX

  1. #1
    Membre régulier
    Homme Profil pro
    Expert Technique Java
    Inscrit en
    Septembre 2012
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Expert Technique Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 117
    Points : 75
    Points
    75
    Par défaut [AJAX] Origin is not allowed by Access-Control-Allow-Origin
    Bonjour à tous,

    Beaucoup de post sur stack overflow ou autre ont été crée à propos de cette erreur :
    Origin is not allowed by Access-Control-Allow-Origin.
    Mais impossible de comprendre comment le régler.

    J'essaie de récupérer le code JSON d'une URL ( qui marche bien ) et j'obtiens cette erreur ci-dessus.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var serviceURL = "http://192.168.1.48/Framework%20Perso/Jquery%20UI%20mobile/Formulaire%20connexion%20+%20inscription/Services/";
     
    var user;
     
    function controlUser(login, password) {
    	loggedUserUrl = serviceURL + 'loggedUser.php?' + 'l=' + login + '&&p=' + password;
    	$.getJSON( loggedUserUrl, function( data ) {
    		console.log( "JSON Data: " + data );
    	});
    }
    Je ne passe pas par localhost mais par l'adresse IP de mon ordinateur pour effectuer mes tests sur mobile par là suite.
    Et je pense qu'il y a un soucis entre l'ip du PC et mon localhost ( ou pas ).

    Si quelqu'un à une idée et peut m'indiquer comment le régler ça serait super !

    Merci par avance les gars

    Bien cordialement,
    Blooster.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Fais une recherche sur la Same Origin Policy.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre régulier
    Homme Profil pro
    Expert Technique Java
    Inscrit en
    Septembre 2012
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Expert Technique Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 117
    Points : 75
    Points
    75
    Par défaut
    Salut Bovino,

    J'ai bien compris le principe et pourquoi cette erreur se produit.
    La seule chose que j'ai trouvé c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    < ?xml version="1.0"?> < !DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross -domain-policy> <allow -access-from domain="*.company.com" /> </cross> - See more at: http://blog.octo.com/envie-de-by-passer-la-same-origin-policy/#sthash.tDsa3pXy.dpuf
    Dans un fichier à la racine de mon serveur ( donc localhost pour moi ).

    Mais ça ne change rien du tout.

    Ce que je comprends pas c'est que si je prends l'url et que je la colle j'ai bien mon json sur le navigateur, et lorsque tout ce fait automatiquement j'ai une erreur pourquoi ?

    La seule chose que je veux faire c'est réussir à récupérer du json viens une URL en paramètre, je vois pas pourquoi j'ai des erreurs comme celles-ci...

    Je suis un peu novice par rapport à ça, si tu pouvais m'expliquer ^^

    Merci d'avance.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <allow -access-from domain="*.company.com" />
    Tu as laissé ça tel quel ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    La seule chose que j'ai trouvé
    Le code que tu nous montres, c'est destiné à Flex manifestement... je vois pas trop le rapport.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Invité
    Invité(e)
    Par défaut
    Vous tentez une requête sur un domaine qui n'est pas le domaine d'origine (une requête cross-domain), ce qui est interdit par les règles de sécurité de la plupart des navigateurs. Faire sauter la sécurité mise en place ne me semble pas la meilleure solution.
    Une solution serait de se servir de votre serveur comme un proxy et de lui demander de faire la requête lui-même et d'envoyer le résultat au client :

    • Depuis le client vous faites une requête au serveur qui lui indique que vous voulez le résultat de la requête externe :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      loggedUserUrl = 'http://votreserveur.com/larequetederequete.php' + 'l=' + login + '&p=' + password;
      $.getJSON(loggedUserUrl  , function( data ) {
         console.log( "JSON Data: " + data );
      });
    • Votre serveur reçoit la "requetederequete" et effectue lui même la requête distante interdite au client.

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      'http://192.168.1.48/Framework%20Perso/Jquery%20UI%20mobile/Formulaire%20connexion%20+%20inscription/Services/'  + 'loggedUser.php?' + 'l=' + login + '&p=' + password; // avec les arguments login/password envoyés par le client.
    • Votre serveur reçoit la réponse du serveur distant, la convertit en JSON si ce n'est pas déjà fait et renvoie le tout au client.


    A noter également qu'envoyer des identifiants de connexion en clair, n'est pas très secure.

  7. #7
    Membre confirmé
    Avatar de tse_jc
    Homme Profil pro
    Data Solutions
    Inscrit en
    Août 2010
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Data Solutions
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 287
    Points : 597
    Points
    597
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    La seule façon de faire du cross domain en ajax c'est d'utiliser la techno JSONP.
    Pour faire simple, on passe par une balise <script> avec un callback anonyme dans l'url.

    Je vous laisse vous documenter sur le sujet.

    ++

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    il existe de nombreuses façons de faire des requêtes cross-domain.

    - CORS
    - JSONP
    - window.postMessage
    - Proxy

    et d'autres plus exotiques, comme le liste cet article: http://jquery-howto.blogspot.fr/2013...x-request.html
    Je n'ai pas proposé JSONP, parce que cette solution suppose que le serveur distant, 192.168.1.48, dans le cas présent, soit capable de gérer le format. Et dans la mesure, où Blooster ne précise pas s'il à la main sur ce serveur distant pour lui faire gérer ce format, la solution n'est peut être pas viable.
    La solution que j'ai proposé est appelée « Setup a local proxy » dans l'article cité, deuxième sous solution. Au lieu de configurer le serveur de développement/production de Blooster en reverse proxy, je lui propose d'écrire un script serveur qui va jouer le rôle du proxy, en récupérant les données sur le serveur distant, invalidant la restriction du cross-domain et en retournant le JSON généré par 192.168.1.48 au client.
    Dernière modification par Invité ; 25/01/2014 à 14h38.

  9. #9
    Membre régulier
    Homme Profil pro
    Expert Technique Java
    Inscrit en
    Septembre 2012
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Expert Technique Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 117
    Points : 75
    Points
    75
    Par défaut
    Super les gars vous êtes géniaux !

    J'ai réussie à résoudre mon problème grâce à vous.

    A une prochaine

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/10/2014, 18h05
  2. Appliquer un filtre? (erreur Access-Control-Allow-Origin)
    Par Ma29200 dans le forum GWT et Vaadin
    Réponses: 9
    Dernier message: 21/03/2013, 19h09
  3. Réponses: 5
    Dernier message: 14/01/2013, 20h14
  4. Ext.Ajax et Access-Control-Allow-Origin:*
    Par sebxid dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 22/02/2012, 15h46
  5. Access Control Allow Origin dans .htaccess
    Par gégé140488 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 05/01/2012, 20h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo