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

JavaScript Discussion :

[Ajax] Cross domain et access denied [Trucs & Astuces]


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 42
    Points : 31
    Points
    31
    Par défaut [Résolu][Ajax] Cross domain et access denied
    Bonjour,

    J'ai un probleme un peu tricky pour le coup :

    Voila, je veux consomer un web service en javascript, avec la methode traditionelle :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function send()
    { 		
    		var oXmlHttp=getHTTPObject();
    		oXmlHttp.open("POST","http://localhost:8800/", false);
        		oXmlHttp.setRequestHeader("Content-Type", "application/soap+xml; charset=utf-8");
        		oXmlHttp.setRequestHeader("SOAPAction", "http://masoapaction");
    ou getHttpObject me retourne un objet XMLHTTP en fonction du browser.

    Bien que le serveur Web traditionel et le serveur Web Services soient sur la meme machine, il ne sont pas sur les memes ports (en d'autres termes, j'ai 2 serveurs HTTP differents sur la meme machine)

    Et donc, Firefox me retourne un erreur lorsque je veux effectuer ma requette :

    Citation Envoyé par firefox
    Erreur : uncaught exception: Permission refusée d'appeler la méthode XMLHttpRequest.open
    Ce qui est normal vu que les noms de domaine sont differents et que les settings de securite par default ne permettent pas d'ouvrir une connection vers un autre serveur:
    • - dans le cas des pages "web", c'est http://localhost:8080

      - dans le cas des web services, c'est http://localhost:8800


    ... je comprends donc l'erreur, mais je ne sais vraiment pas comment resoudre ou contourner le probleme.

    Il y a toujours la solution de modifier les settings de securite par defaut, mais je ne veux pas obbliger les clients a le faire .... ).

    Quelqu'un sait il comment faire ?


    merci d'avance

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Solution de contournement, tu appelle une page sur le domaine qui elle fera l'appel vers l'exterieur (enfin... sur un autre port)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    ok, mais est ce que c'est possible de faire ca en HTML/Javascript - et heu .. si oui, comment ??? ?

    Il faut passer par de la programmation serveur side non ?

    Parceque- c'est vrai je l'ai omis dans mon premier post - mais si je consome les web services en J.S. , c'est justement pour eviter d'avoir a faire de la programmation cote serveur ...

    Merci pour l'idee en tout cas !

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    qu'est-ce que tu appelles consommer ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    Je veux dire par la envoyer une requette (HTTP/SOAP) au Web service et recevoir une reponse de lui (il me semble que consomer est le terme, mais je peux me tromper )

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Je doute alors que ce soit possible

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    Mouais, tu as -malheureusement- peut etre raison. C'est con parceque sous windows 2000, avec IE, ca marche tres bien car il n'y a pas ce setting de securite !!

    Comme quoi trop de securite limite la liberte. Pensez y en 2007 !

    enfin si quelqu'un a une solution, elle est la bienvenue !!! ;-)

  8. #8
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    c'est peut être le terme mais je ne le connais pas.
    et avec des entêtes d'hôte?

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    Pas bête du tout ça, seulement, je ne crois pas que ca puisse marcher.
    En effet, j'utilise IIS comme serveur web, et une application developpe en interne par ma boite comme serveur de web sevices. Du coupo je ne pense pas que cela puisse marcher si ?

  10. #10
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    ben t'as plus de problèmes de ports
    mais il faut créer les enregistrements dans le serveur DNS qui gère la zone

  11. #11
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    ton application utilise un port spécifique ?

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    oui voila.
    Le serveur Web ecoute sur le port 8080
    Et l'application qui gere les Web Services tourne sur le 8800 !
    (merci de ton interet au passage !)

  13. #13
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    633
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Points : 721
    Points
    721
    Par défaut
    ton serveur web ecoute sur sur le port 8080 car tu dois avoir un serveur de cache(proxy) qui ecoute sur le port 80

    ton serveur web héberge plusieurs sites : pages web et application de services. Si tu fais pour le site web une entete :
    monsite.fr avec pour port 8080
    et pour ton appli de services :
    messervices.fr avec pour port 8800
    lorsque dans ton navigateur tu vas taper monsite.fr il devrait renvoyer les requetes sur le port spécifé.

    Par contre il faut que les serveur dns qui héberge la zone "fr" ai les enregistrement d'hote pour la machine messervice et monsite

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    OK j'ai enfin trouve une solution simple et élégante (non non je ne me la pete pas )

    Cette solution fonctionne avec le serveur web Apache mais bon, il doit exister des solutions equivalentes avec les autres serveurs (mais d'abord : quels autres ? )
    (Ouais au fait laissez tomber IIS, AMHA, apache est carrement mieux)

    En fait c'est assez simple : il suffit d'utiliser mod_proxy, qui va lui meme rediriger le flux HTTP .

    2 lignes de code suffisent dans le fichier httpd.conf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ProxyPass    /mon_alias/    http://lewebservice.com/
    ProxyPassReverse    /mon_alias/    http://lewebservice.com/
    Avec ceci, toutes les requetes dirigees sur http://localhost/mon_alias seront automatiquement redirigées vers http://lewebservice.com

    J'espere que ca en aidera. En tout cas, ca marche nickel !

  15. #15
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    merci du tuyau ca risque de me servir

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 172
    Points : 100
    Points
    100
    Par défaut
    Salut,

    j'ai le même problème et ta solution semble intéressante.
    L'ennui c'est que notre appli est déployée sous WebLogic.
    Est ce que quelqu'un sait si il existe un paramètre équivalent à ProxyPass pour WebLogic ?

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

Discussions similaires

  1. [AJAX] Json + Ajax cross domain.
    Par Cartman.inc dans le forum AJAX
    Réponses: 2
    Dernier message: 18/02/2011, 11h01
  2. [Article] AJAX cross-domain avec flXHR
    Par E.Bzz dans le forum AJAX
    Réponses: 2
    Dernier message: 06/07/2010, 13h11
  3. Réponses: 6
    Dernier message: 30/06/2010, 10h53

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