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 :

htaccess: 401 autorization required


Sujet :

Apache

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 170
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 170
    Par défaut htaccess: 401 autorization required
    Bonjour,
    J'ai fais un htaccess qui marche tres bien sauf 1 truc.

    Je souhaite que l'utilisateur, lorsqu'il clique sur "cancel" de la fenetre qui lui demande le nom d'utilisateur et mon de pase, soit redirigé sur une autre page, au lien de tomber sur une page blanche avec le message standart.

    Pour ce la j'ai ajouté ceci à mon fichier htaccess:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ErrorDocument 401 http://www.monsite.ch/index,php
    Mais ca marche pas!!

    Comment puis faire ceci?

    Voici mon htaccess:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ErrorDocument 401 http://www.monsite.ch/index.php
    AuthUserFile /home/www/monsite.ch/admin/.htpasswd
    AuthGroupFile /dev/null
    AuthName "acceder a oooooooo"
    AuthType Basic
    <LIMIT GET POST>
     
    Require valid-user
    </LIMIT>
    Si non tout se passe bien

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    L'erreur 401 ne doit pas renvoyer sur un document externe : tout paramètre de type URL ne sera pas valable par respect des normes. Extrait de la documentation d'Apache à ce sujet :
    Notez que lorsque vous spécifiez un ErrorDocument qui pointe vers une URL externe (c'est -à-dire toute adresse commençant par quelque chose du style "http:") Apache émettra une requête de redirection au client pour lui indiquer où trouver le document. Ceci peut perturber les robots et d'autres clients qui essaient de déterminer si une URL est valide en testant le code retour de la requête. De plus, si vous utilisez l'écriture ErrorDocument 401 le client ne saura pas qu'il doit demander un mot de passe puisqu'il ne recevra pas le code retour 401. Par conséquent, il est impératif d'utiliser une URL locale pour une directive "ErrorDocument 401". Ceci est induit par la nature des schémas d'authentification de base d'HTTP.
    Il faut également que la ressource sur laquelle vous renvoyez l'utilisateur lors d'une telle erreur ne soit pas concernée par l'authentification : voir un sujet similaire récent si vous êtes concernés.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 170
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 170
    Par défaut
    Salut merci pour ta reponse.

    En fait si, j'ai bien compris il faudrait alors que je fasse comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ErrorDocument 401 /erreur.php
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ErrorDocument 401 ../erreur.php

  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
    Oui, la première solution (/index.php) étant préférable car valable quelque soit l'URL déclanchant une demande d'authentification.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 170
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 170
    Par défaut
    Ben j'ai vite trouvé 5mn pour essayer. Avec la solution 1, a chaque fois que je clique "Cancel" il m e renvoi la fenetre et ceci jusqua ce que j'appuie 5 à 10 fois Cancel.

    Finalement je trouve une page /index.php, sans le CSS.

    Ma premiere preoccupation: pourquoi dois-je appuyer autant de fois cancel. Pour le CSS, ca me semble normal et au pire j'incluerai le CSS dans la page d'erreur

  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
    A ton avis, que fait le navigateur quand tu cliques sur Cancel ? Il redemande la même page. Donc le serveur redit qu'il faut une authentification et donc le navigateur affiche un pop-up. Tu fais ça un certain nombre de fois et au bout du compte, le navigateur en a marre, il se doute qu'il y a un souci et affiche le code HTML renvoyé avec le code 401 demandant une authentification, donc ta page index.php. Pour le CSS, c'est le même scénario : le CSS se trouve dans la partie protégée du site, donc le navigateur ne peut pas le récupérer.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 170
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 170
    Par défaut
    Salut,

    Oui mais si je mets ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ErrorDocument 401 /error401.php
    il devrait me rediriger vers la page error401.php qui se trouve a la racine de mon site, donc en dehor du dossier protégé. Donc du mement qu'il n'est plus dans le dossier protégé, il devrait plus m'afficher le fentre d'autehtification, non?

    PS: Ceci arrive qu0avec FF, avec Safari, la fenetre d'autentification disparait apres avoir appuyer sur Cancel

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 170
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 170
    Par défaut
    je pense avoir resolu mon problème.
    Je ferai des teste encore demain, mais pour le moment ca fonctionne bien sous FF mais pas sous Safari, mais ca c'est pas grave car safari n'affiche la page blanche standard..

    Pour cela, j'ai fait comme ceci.

    Dans mon fichier htaccess, j'a emplacé cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ErrorDocument 401 /error401.php
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ErrorDocument 401 /error401.html
    Dans ma page error401.html, j'ai enlever tout mon code php et remplacer par du html pure. Donc y a que du html.

    Et a partir de la, sous FF, quand je clique "Cancel", il me redemande pas de rappuyer sur cancel. la page error401.html s'affiche, mais au meme niveau que le dossier protégé.

    A voir

  9. #9
    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
    Citation Envoyé par pierrot10 Voir le message
    il devrait me rediriger vers la page error401.php qui se trouve a la racine de mon site, donc en dehor du dossier protégé. Donc du mement qu'il n'est plus dans le dossier protégé, il devrait plus m'afficher le fentre d'autehtification, non?
    Oui et non : pour le serveur, tu es redirigé vers /error401.php, mais pour le navigateur, l'URL qu'il a demandé n'a pas changé et est donc toujours dans un chemin protégé. Exemple en demandant l'URL protégée http://.../protege/page.html :
    1. Le navigateur demande /protege/page.html au serveur
    2. Apache voit que c'est une page protégée. Il envoie donc un code 401 pour demander une authentification. En parallèle, il exécute la page /error401.php et renvoie le code HTML généré par cette page.
    3. Le navigateur reçoit le code 401 et le code HTML. Note bien que pour lui, le code HTML vient explicitement de /protege/page.html. Le code 401 lui fait ouvrir un pop-up.
    4. Tu cliques sur Cancel : le navigateur va donc afficher le code HTML qu'on lui a envoyé. Seulement, dans ce code HTML, il y a des images et des CSS qui sont en chemin relatif à /protege (par exemple, src="images/toto.jpg" est résolu en /protege/images/toto.jpg), donc il va demander ces différents fichiers et du coup, on repart à 1 et tu peux voir plusieurs pop-ups.

    A mon avis, le fait que ça marche ne vient pas du fait que c'est un .html à la place d'un .php ; la différence c'est le code HTML qui a changé et qui est devenu plu simple ou avec des URL relatives à la racine du site (i.e. commençant par /).

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

Discussions similaires

  1. HTTPS + .htaccess = erreur 401
    Par fred32 dans le forum Apache
    Réponses: 9
    Dernier message: 20/09/2010, 13h01
  2. Réponses: 6
    Dernier message: 05/03/2010, 15h18
  3. Réponses: 1
    Dernier message: 25/09/2007, 09h18
  4. Réponses: 1
    Dernier message: 01/06/2007, 21h18
  5. [Sécurité] .htaccess & "require valid-user" & satisfy
    Par Stef784ever dans le forum Langage
    Réponses: 1
    Dernier message: 02/10/2005, 12h13

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