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

Apache Discussion :

Interaction javascript avec iframe appelant autre serveur


Sujet :

Apache

  1. #1
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2012
    Messages : 9
    Par défaut Interaction javascript avec iframe appelant autre serveur
    Bonjour,

    depuis quelques temps je suis bloquée sur un projet. Je suis développeur et non une pro serveur. je dois faire les modifications moi même mais je ne m'en sort pas.

    Je dois intégrer une API dans mon site grâce à une Iframe. Cette API est hébergée sur un autre serveur ne nous appartenant pas et pour lequel nous accédons à l’application grâce à des webservices. Nous devons à terme avoir des javascript sur notre serveur qui interagissent avec les éléments de l'Iframe.

    Notre serveur possède les configurations suivantes :
    Gentoo 2006.0 - 64 bits
    - Web : apache2 / php5 (suPHP) / ssl
    - Base : MySQL5 / phpMyAdmin
    - E-mail : qmail / vpopmail* / courier-imap / qmailadmin / spamassassin / clamAV
    - FTP : proftpd
    - Admin : Webmin / OVHm / Webalizer


    Dans mon httpd.conf j'ai le passage suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <VirtualHost xx.xx.xx.xxx:xx>
            ServerAdmin webmaster@xxxx.com
            DocumentRoot /home/xxx/xx/xxxx/www
            SuexecUserGroup xxx users
            ServerName xxxx.xxx.com
    	CustomLog logs/xxxx.xxx.com-access_log combined
            ScriptAlias /cgi-bin/ /home/xxx/cgi-bin/
    	AddHandler x-httpd-php5 .php
    </VirtualHost>
    Le support de l'API m'ont informé qu'il fallait que je rajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <VirtualHost xx.xx.xx.xxx:xx>
            ServerAdmin webmaster@xxxx.com
            DocumentRoot /home/xxx/xx/xxxx/www
            SuexecUserGroup xxx users
            ServerName xxxx.xxx.com
    	CustomLog logs/xxxx.xxx.com-access_log combined
            ScriptAlias /cgi-bin/ /home/xxx/cgi-bin/
    	AddHandler x-httpd-php5 .php
     
    	 ProxyRequests Off       
    	 <Proxy *>               
    	    Order allow,deny               
    	    Allow from all  
                Satisfy Any     
    	 </Proxy>       
    	 ProxyPass xxxx.xxx.com http://adresse de l'API       
    	 ProxyPassReverse xxxx.xx.com http://adresse de l'API
    	 ProxyPreserveHost       On
     
    </VirtualHost>
    J'ai donc réussit à activer les modules : mod_proxy and mod_proxy_http comme demandé par le support de l'API, mais je n'arrive toujours pas à accéder au contenu de mon Iframe.

    J'ai surement loupé une étape pour que le serveur accepte de me laisser toucher au contenu de l'Iframe grâce au JavaScript.

    Si quelqu'un a des pistes ou même une solution je suis preneuse. j'utilise Webmin, mais je passe aussi en ligne de commande via putty ne maîtrisant pas complètement Webmin

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    La configuration ProxyPass est étrange : on ne peut pas avoir ProxyPass xxx.yyy.com, les directives ProxyPass et ProxyPassReverse prennent en premier argument un chemin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ProxyPass /toto http://site.api.com/
    ProxyPassReverse /toto http://site.api.com/
    Comme ça, quand le navigateur demandera http://ton.site.com/toto/xxx, Apache fera la requête http://site.api.com/xxx et renverra au navigateur la réponse.

    Ce qu'il faut que tu vérifies aussi c'est que le serveur Apache est capable d'accéder au site site.api.com. Pour cela, il faut se connecter en ligne de commande sur le serveur Apache et taper la commande suivante :
    Il faut que cette commande "accroche". Si tu as un message d'erreur du style "timeout" ou autre, c'est clair que ça ne peut pas marcher. Il faut alors te rapprocher d'un administrateur système et/ou réseau pour dépanner.

  3. #3
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2012
    Messages : 9
    Par défaut
    Bonjour,

    Merci de ta réponse.

    J'ai fait la commande que tu m'as dite sur mon serveur et j’obtiens :
    Trying xxx.xx.xx.xx...
    Connected to xx.xx-xx.com.
    Escape character is '^]'.
    Donc ça à l'air de fonctionner si je comprend bien ? (j'espère que ce n'est pas l'inverse).

    Pour la partie proxy :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ProxyPass /toto http://site.api.com/
    ProxyPassReverse /toto http://site.api.com/
    C'est un site Prestashop, et la page appelée est à la racine du site qui est gérée par la réécriture d'url. Je n'ai donc pas de dossier à proprement parler.
    l'adresse ressemble à ça : monsite.com/test et l'iframe est affiché dans cette page grâce au fichier .tpl que j'ai créé dans l’arborescence de prestashop.

    edit : j'ai essayé de créer un nouveau dossier dans mon arborescense. j'ai donc www/mondossier/mondossier.php

    Ce fichier php contient l'Iframe qui doit afficher l'adresse http://site.api.com/. j'ai donc changé et sur mon serveur j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ProxyPass /mondossier http://site.api.com/xxx/xx/
    	 ProxyPassReverse /mondossier http://site.api.com/xxx/xx/
    et là j'ai une page d'erreur :
    Server Error
    404 - File or directory not found.
    The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.
    Alors je ne sais plus je suis perdue. l'adresse du site monsite/mondossier doit être l'adresse de l'iframe ou de ma page ?

    en Fait actuellement pour appeler mon Iframe j'ai une adresse qui est créée automatiquement et dynamiquement http://site.api.com/xxx/xx/xxx.aspx?xxx=xxx&xxx=xxx et ainsi de suite.

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    En effet, ton telnet montre que la connexion passe bien.

    En revanche, dans ProxyPass, le /toto ne doit surtout pas être un répertoire qui existe car sinon il se passe ce qu'il t'arrive : erreur 404. C'est un "répertoire virtuel" on va dire qui pointe en fait sur un serveur distant : toute URL pointant sur ce répertoire virtuel est renvoyée vers le serveur distant.

  5. #5
    Membre régulier
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2012
    Messages : 9
    Par défaut
    Bonjour et merci beaucoup pour ta réponse.

    J'ai donc fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ProxyPass /xxx/api    http://xx.xxx.com/xxxxx/
    	 ProxyPassReverse /xxx/api   http://xx.xxx.com/xxxx/
    /xxx/api/ n’existe pas

    donc quand je crée mon iframe le src est égale à :

    Mais j'ai l'impression que le serveur n'appel pas http://xx.xxx.com/xxxxx/
    En effet mon iframe ne charge rien.

    Je suis vraiment désolée, peut être est-ce très simple, mais là je suis dans des notions que je n'avais jamais vu avant, donc je suis totalement perdue et mon projet est complètement bloqué.

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Pour le savoir, il faut regarder dans les logs d'Apache, peut-être même activer les logs au niveau debug (directive LogLevel, je crois). Au pire, peut-être même faire une capture de flux (tcpdump) pour voir ce qu'il se passe dans le détail, mais c'est assez technique à faire.

Discussions similaires

  1. [WB18] iFrame et autre serveur
    Par ciberju dans le forum WebDev
    Réponses: 4
    Dernier message: 16/05/2013, 07h36
  2. Réponses: 10
    Dernier message: 02/07/2012, 17h30
  3. Javascript avec iframe
    Par Woodgate dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/01/2008, 21h38
  4. [AJAX] probleme appelle page XML sur autre serveur
    Par ldcarpathes dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/08/2006, 18h35
  5. [javascript] Redimension IFrame avec un frameset
    Par mavina dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 21/06/2006, 16h12

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