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

NodeJS Discussion :

req.url ne contient que le path


Sujet :

NodeJS

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 90
    Points : 43
    Points
    43
    Par défaut req.url ne contient que le path
    Bonjour,

    lorsque je fais un print de "req.url" je me rend compte que cette variable ne contient que le path.

    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
    21
    var http = require('http');
    var net = require('net');
    var url = require('url');
    var qs = require('querystring');
     
    // Create an HTTP tunneling proxy
    var proxy = http.createServer(function (req, res) {
     
      console.log('Voici req.url : ' + req.url);
      // qui me retourne : /mon/path
     
      var path = url.parse(req.url).pathname;
      var host = url.parse(req.url).hostname;
      var port = url.parse(req.url).port;
     
      console.log('path : ' +path + ' host ' + host);
    // qui me retourne : path : /trunk/checkSubdomain host undefined
      });
     
    // now that proxy is running
    proxy.listen(8998, '127.0.0.1');
    req.url n'est pas censé me donner l'URL complète ?

    Merci d'avance !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut

    Non, req.url n'est pas censé te donner l'URL complète : cf documentation sur request.url

    Pour avoir le host et le port, il te faut regarder dans request.headers.host qui retournera dans ton cas "127.0.0.1:8998".

  3. #3
    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 : 54
    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 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Heu...

    A quoi ça peut bien te servir de vouloir récupérer le host et le port ?
    A priori, tu les connais déjà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    proxy.listen(8998, '127.0.0.1');

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je n'avais pas pensé à ce détail^^

    Mais je vais sauver les apparences en disant que ça servira pour l'ip le jour où il ouvrira son application au monde au lieu de se cantonner à sa boucle locale

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 90
    Points : 43
    Points
    43
    Par défaut
    Vous avez tout a fait raison.
    J'avais déjà le host et le port mais je reprenais un script existant qui tentait de récupérer le host + port de req.url.

    Avouez que ça n'est pas très intuitif : req.url qui contient tout sauf le host et le port.

    Merci a vous en tout cas.

  6. #6
    Invité
    Invité(e)
    Par défaut
    En fait, c'est assez logique si on considère que le module http veut coller au maximum à la norme HTTP.

    En regardant de près une requête HTTP, tu vois une structure qui match très bien avec les choix de Node.js dans leur module.

    Quand je lis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GET /forums/f23/webmasters-developpement-web/javascript/ HTTP/1.1
    Host: www.developpez.net
    je trouve assez logique d'avoir
    • request.url = "/forums/f23/webmasters-developpement-web/javascript/"
    • request.headers.host = "www.developpez.net"

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 90
    Points : 43
    Points
    43
    Par défaut
    yes yes.

    J'essayais de me donner bonne conscience.

    Les debuts sur nodeJs sont un peu durs. La notion de callBack ne m'est pas trés familière.

    Mais ça à l'air bien cool, j'ai jamais monté un serveur web aussi vite

    Ma prochaine question sera plus pertinente, promis !

  8. #8
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 311
    Points : 545
    Points
    545
    Par défaut
    Attention ! request.headers.host et les arguments passés à la méthode listen sont des informations complètement differentes

    Pour la méthode listen, il s’agit de définir les interfaces réseaux sur lesquelles on souhaite publier le serveur , si on définit que le port, le serveur est publier sur toutes les interface reseaux de type IPv4 .
    Pour connaitre l’interface réseau qui a reçu la requête HTTP il faut consulter la socket IP disponible par request.connection !

    Pour le champ Host des headers d’une requête http, il s’agit uniquement de ce que le client a renseigné. Il est impossible d’en déduire l’interface réseau sur lequel va aboutir la requête HTTP , a moins d’avoir la maîtrise complète de configuration réseau entre le client et le serveur.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/02/2006, 00h33
  2. Réponses: 5
    Dernier message: 02/02/2006, 23h31
  3. Réponses: 6
    Dernier message: 20/09/2005, 21h11
  4. [Eclipse 3.0.1] Image qui n'affiche que son path
    Par thehpman dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 16/03/2005, 11h28
  5. Réponses: 3
    Dernier message: 21/01/2004, 08h47

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