Il semble y avoir beaucoup de confusion sur le code de statut http de retour si l'utilisateur tente d'accéder à une page qui demande à l'utilisateur de se connecter.
Donc, fondamentalement, ce code d'état est envoyer quand je montre la page de connexion?
Je suis sûr que nous avons besoin d'utiliser un code d'état dans l' 4xx
de la gamme.
Je ne parle pas de l'authentification HTTP, ici, de sorte que c'est au moins 1 code d'état, nous n'allons pas utiliser (401 Unauthorized
).
Maintenant que devrions-nous utiliser? Les réponses (ici aussi, sur DONC) semblent varier:
Selon la réponse ici, nous devrions utiliser 403 Forbidden
.
Mais dans la description du code d'état est:
L'autorisation ne sera pas l'aide et de la demande ne DOIT PAS être répété.
Bien que ne ressemble pas à celui de droite. Depuis l'autorisation de l'aide.
Donc permet de vérifier certaines autres réponses. La réponse ici même n'utilise pas l' 4xx
gamme, mais utilise plutôt 302 Found
La description de l' 302 Found
code d'état:
La ressource demandée réside temporairement dans une autre URI. Depuis la redirection peut être modifiée à l'occasion, le client DEVRAIT continuer à utiliser l'URI de Demande pour les demandes futures. Cette réponse n'est mis en cache si elle est indiquée par un Cache-Control ou l'Expiration de champ d'en-tête.
Je pense que n'est pas ce que je veux. Car ce n'est pas la ressource demandée, qui se trouve sous un autre URI. Mais plutôt une complètement différente de la ressource (page de connexion vs authentifié contenu de la page).
J'ai donc déplacé le long et de chercher une autre réponse étonnamment avec encore une autre solution.
Cette réponse suggère que nous choisissons 400 Bad Request
.
La description de ce code d'état est:
La demande ne peut pas être comprise par le serveur en raison de la malformation de la syntaxe. Le client ne DOIT PAS répéter la requête sans modifications.
Je pense que le serveur a compris la requête, mais refuse juste de donner accès avant que l'utilisateur est authentifié.
Une autre réponse , dit 403
réponse est correcte, mais il se termine par:
Si c'est un site web où vous êtes en essayant de refuser l'accès basé sur un cookie de session [c'est ce que je fais], de 200 avec un organisme approprié pour indiquer que la session est nécessaire ou un 302 temporaire rediriger vers une page de connexion est souvent meilleur.
Donc, 403
"est correct, mais 200
ou 302
est LE MEILLEUR.
Hey! C'est ce que je suis à la recherche d': LA MEILLEURE solution. Mais elle ne devrait pas non plus être la même que celle qui est correcte? Et pourquoi serait-il le meilleur?
Merci à tous ceux qui ont fait cela loin dans cette question :)
Je sais que je ne devrais pas trop de soucis à ce sujet. Et je pense que c'est une question hypothétique (pas vraiment, mais utilisé en raison de manque d'un meilleur mot).
Mais cette question me hante depuis quelques temps maintenant.
Et si j'aurais été un manager (qui a juste pris quelques frais de sonner les mots comme ils le font toujours), j'aurais dit: mais, mais, mais, mais sous le signe du repos est important. :-)
Donc: qu'est - the right way™
de l'utilisation d'un code d'état dans la situation ci-dessus (le cas échéant)?
tl;dr
Est-ce le bon code de statut http de la réponse lorsqu'un utilisateur tente d'accéder à une page qui nécessite un nom d'utilisateur?