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

Langage PHP Discussion :

Injecter des entêtes http dans une requête


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 113
    Par défaut Injecter des entêtes http dans une requête
    Bonjour,

    Nous développons actuellement une application J2EE (sous portail environnement JBOSS) qui sera intégrée plus tard à un portail maître.

    Pour effectuer des tests (nous n'avons pas encore le portail maître), nous avons du simuler l'appel de notre sous portail.
    Je ne vais pas rentrer dans les détails, mais lorsque notre sous portail est appellé par le portail, une identifications à lieux.
    Notre application récupère un certains nombre d'entêtes http de la requète afin de réaliser l'identification (traitement, appel web Service...).

    Afin de simuler cela, jusqu'a maintenant nous utilisions Modify Header de Firefox afin d'injecter ces entêtes. Parfais pour des tests manuels.

    Seulement, maitenant nous souhaitons automatiser avec Selenium.
    Pour info, nos scénarii dépendent des données saisies dans les entêtes.

    Selenium ne pouvant pas avoir d'intéraction avec le module Modify Header (a priori), nous ne savons plus comment modifier ces paramêtres de manière automatique.

    Nous avons donc eu l'idée de réaliser une page permettant via un formulaire, de saisir ces données, puis en cliquant sur envoyer, d'appeler notre sous portail en injectant les données saisies, en entête dans la requête.

    Seulement, après avoir ecumé le Web, nous ne trouvons rien qui nous permette de faire cela.
    La fonction header de php permet uniquement d'injecter des entêtes dans la réponse http. Cela ne nous convient donc pas car nosu les voulons dans la requête.

    Nous avons également pensé en dernier resort de réaliser une servlet java, mais beaucoup plus embétant à developpé.

    Pourriez-vous m'aider à trouver un moyen de contourner mon problème?

    A savoir que nous pouvont nous diriger vers n'importe quel techno (php, javascript, java, ajax, config apache...)

    Merci beaucoup

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 34
    Par défaut
    Bonjour,

    avec PHP vous pouvez utiliser la bibliothèque cURL. Cela va vous permettre d'envoyer les entête HTTP que vous voulez (via la fonction curl_setopt).

    La doc PHP de cURL : http://fr.php.net/manual/fr/book.curl.php
    La page parlant de curl_setopt : http://fr.php.net/manual/fr/function.curl-setopt.php
    Un tutoriel sur developpez.com : http://julp.developpez.com/php/curl/

    Cordialement,
    Léviathan

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 113
    Par défaut
    Bonsoir,

    Merci pour votre réponse.
    J'ai installé, l'extension, et je me suis fais un petit bout de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $ch = curl_init();
    $header[] = "xxx: ma_var";
    // Définition de l'URL et autres options appropriées
    curl_setopt($ch, CURLOPT_URL, "http://localhost:8080/test-ihm/swf/maPage-flow");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
     
    // Récupération de l'URL et passage au navigateur
    curl_exec($ch);
     
    // Fermeture de la ressource cURL et libération des ressources systèmes
    curl_close($ch);
    J'ai testé avec firefox, et cela ne marche pas.
    Pour voir si l'entête est bien présente, j'ai regardé le contenu de la requete avec tamper data ou live http header.
    Or dans mon cas, je ne vois pas l'entête.

    Ca n'a pas l'air compliqué pourtant, ais-je oublié quelque chose?
    De plus, comment faire pour que l'url de mon sous portail se retrouve dans la barre d'url? Dans le genre d'une redirection.
    Car la, la requète est bien faite, j'ai une erreur 403 acces denied caractèristique du sous portail lorsque les entête ne sont pas présentes (c'est bien le cas donc normal), le contenu s'affiche donc bien dans la page, mais l'url reste l'url de ma page php.

    Une idée?

    Merci

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 113
    Par défaut
    Bonjour,

    Finalement, je viens de me rendre compte que même si je ne vois pas les entête dans Live http header, la page marche (je n'avais pas testé avec tous les 4 headers obligatoires).
    Donc maintenant j'ai bien accés à la page avec ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    // Création d'une ressource cURL
    $ch = curl_init();
    // Définition de l'URL et autres options appropriées
    curl_setopt($ch, CURLOPT_URL, "http://localhost:8080/ihm-ihm/swf/maPage-flow");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); 
    curl_setopt ($ch, CURLOPT_HTTPHEADER, Array("cinil: ROB","urlrob: https://localhost:8243/services/WService","jeton: 999","num: 111"));
    curl_setopt ($ch, CURLOPT_HEADER, 1);
     
    // Récupération de l'URL et passage au navigateur
    curl_exec($ch);
     
    // Fermeture de la ressource cURL et libération des ressources systèmes
    curl_close($ch);
    Par contre maintenant, j'ai la réponse suivante:

    HTTP/1.1 302 Moved Temporarily Server: Apache-Coyote/1.1 X-Powered-By: Servlet 2.5; JBoss-5.0/JBossWeb-2.1 code_retour: ok Pragma: no-cache Expires: Thu, 01 Jan 1970 00:00:00 GMT Cache-Control: no-cache Cache-Control: no-store Set-Cookie: JSESSIONID=6BDA306B8D53DC329CFV1290AB05ACF1; Path=/ihm-ihm Location: http://localhost:8080/ihm-ihm/swf/ma...execution=e1s1 Content-Length: 0 Date: Tue, 02 Jun 2009 07:39:51 GMT
    Auriez-vous une idée pour mon pb?

Discussions similaires

  1. Insérer des champs vides dans une requête sql
    Par js8bleu dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/02/2008, 15h00
  2. Besoin de retrouner des 0 aussi dans une requête SQL avec JOIN
    Par Jean-Marc68 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 05/11/2007, 14h45
  3. Ajouter un entête HTTP dans une page HTML
    Par dedz dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/08/2007, 18h10
  4. [SQL] insérer des variables php dans une requête sql
    Par lili38 dans le forum PHP & Base de données
    Réponses: 28
    Dernier message: 22/06/2007, 16h38
  5. Récupérer la valeur des champs calculés dans une requète SQL dans vba
    Par FrédéricCM dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 28/06/2006, 16h29

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