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 :

RewriteRule et données de POST


Sujet :

Apache

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Points : 9
    Points
    9
    Par défaut RewriteRule et données de POST
    Bonjour à tous,

    Pour gérer un login sécurisé, j'essaie de faire fonctionner mon site avec la règle de réécriture suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    RewriteCond %{HTTPS} off
    RewriteCond %{REQUEST_URI}	^.*/login$
    RewriteRule (.*)  https://%{HTTP_HOST}%{REQUEST_URI}  [L]
    Là ou le bat blesse c'est que par cette méthode je perds les données de post de mon formulaire (le champ action du formulaire pointant sur la page "login")... du coup je sèche, existe t'il une syntaxe permettant faire une règle de réécriture qui conserve les données de POST?

    Merki d'avance!

  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
    Points : 12 977
    Points
    12 977
    Par défaut
    Pas comme ça : le problème vient que tu fais une redirection pour passer en HTTPS et c'est parce qu'il y a redirection que le navigateur ne poste plus les données. Pour lui, le post s'est bien passé et la réponse à la requête est une redirection : pourquoi reposter le formulaire dans ces conditions ? Il faut déjà être en HTTPS avant de poster le formulaire, pas le choix.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 8
    Points : 9
    Points
    9
    Par défaut
    Bonjour Mac et merci pour ta réponse.

    Je crois que ce qui n'est pas clair sur les rewrite rules pour moi est en fait :

    => dans quel cas s'agit il d'une redirection?

    Car toutes mes pages passent par un boostrap via la règle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1
    Et cette règle n'empêche en rien le passage des paramètres de POST de mon formulaire de login à mon code PHP.

    Du coup j'ai un doute sur le paramètre qui varie entre ce que je viens de décrire ci-dessus (un forward? une ré-écriture tout court?) et une véritable "redirection" qui elle semble être traitée comme une toute nouvelle requête.

    J'ai essayé une variante, où je redéfinis intégralement l'URL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteRule ^(.*)$ http://%{HTTP_HOST}/index.php/$1
    et là je "perds" effectivement mes données de POST.
    Dois-je en conclure la règle suivante :
    Le fait redéfinir intégralement l'URL dans une RewriteRule équivaut à un abandon de la requête précédente (ce qu'on appelle redirection?) alors que le fait de ne modifier que la %{REQUEST_URI} initiale est un autre comportement (ce qu'on appelle ré-écriture tout court?)

    Merci d'avance pour tes éclaircissements!

    A+

    PS : Concernant mon premier message
    En fait je n'espérais pas que le client renvoie à nouveau le formulaire mais que le serveur transforme la première requête http en https en conservant les paramètres qui avaient été reçus dans la requête http...
    => Cela n'avait pas de sens vu que les données auraient de toutes façons été envoyées non cryptées au serveur...
    Donc en effet ce sera forcément dans le code de la page qui génère le formulaire de login que le champ "action" de ce formulaire devra indiquer explicitement un lien https pour initier la connexion sécurisée...

  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
    Points : 12 977
    Points
    12 977
    Par défaut
    Le fait de faire figurer http:// dans le second membre d'un RewriteRule déclenche une redirection explicite par le navigateur : Apache arrête immédiatement le traitement (pas d'exécution du PHP) et demande au navigateur d'aller voir la nouvelle URL. C'est à ce moment-là, parce qu'on lui demande d'aller voir ailleurs que le navigateur ne renvoie plus le POST. En revanche, dans le cas où ce http:// ne figure pas dans le second membre du RewriteRule, il s'agit d'une redirection implicite, interne à Apache qui va poursuivre le traitement l'exécution du PHP, et le client (le navigateur) n'est pas au courant, on ne lui demande rien d'autre, donc il n'y a pas besoin de renvoyer de nouveau les données POST.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

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

Discussions similaires

  1. Envoyer des données par post sans formulaire
    Par webrider dans le forum Langage
    Réponses: 12
    Dernier message: 31/03/2007, 19h11
  2. envoi de données methode POST
    Par oceanbigone dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/02/2007, 18h43
  3. [AJAX]problème d'envoie de données méthode POST
    Par xave dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/07/2006, 16h35
  4. Réponses: 4
    Dernier message: 03/05/2006, 18h23
  5. validation de donnée... et post
    Par sonialem2000 dans le forum Bases de données
    Réponses: 12
    Dernier message: 13/07/2004, 02h34

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