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

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    42
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 42
    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 confirm� 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
    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
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    42
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 42
    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 �m�rite
    Inscrit en
    Janvier 2004
    Messages
    633
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Par d�faut
    qu'est-ce que tu appelles consommer ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    42
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 42
    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 confirm� 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
    Par d�faut
    Je doute alors que ce soit possible

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    42
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 42
    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 �m�rite
    Inscrit en
    Janvier 2004
    Messages
    633
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    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
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    42
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 42
    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 �m�rite
    Inscrit en
    Janvier 2004
    Messages
    633
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    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 �m�rite
    Inscrit en
    Janvier 2004
    Messages
    633
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    Par d�faut
    ton application utilise un port sp�cifique ?

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    42
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 42
    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 �m�rite
    Inscrit en
    Janvier 2004
    Messages
    633
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 633
    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
    Membre averti
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    42
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 42
    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 : 49

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

  16. #16
    Membre confirm�
    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
    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