Pourquoi ne pas exprimer correctement la redirection lorsque je modifie le code d’état

Le standard res.redirect('https://stackoverflow.com/some/path'); se comporte comme prévu et redirige immédiatement la demande vers https://stackoverflow.com/some/path , mais si j’ajoute un code de statut, par exemple, res.redirect(401, 'https://stackoverflow.com/some/path') et que je navigue vers la page de redirection, express ne le redirige pas to https://stackoverflow.com/some/path , au lieu de cela, je viens d’obtenir la page suivante:

 

Unauthorized. Redirecting to /

et il ne redirige jamais. C’est la même chose pour tous les codes d’état que je fournis en passant.

Pourquoi une redirection spécifiée par le code ne fonctionne-t-elle pas comme prévu et comment puis-je retourner un code d’état personnalisé et le redirect vers un autre chemin?

Le comportement de l’en-tête Location , utilisé pour redirect quelqu’un, n’est défini que pour les codes d’état de la plage 3xx et pour les états 201/202. Puisque vous définissez le code de statut sur 401, l’en-tête est ignoré et le contenu de la réponse est restitué. Il se trouve que Express inclut un texte explicatif expliquant que l’utilisateur est redirigé au cas où la redirection serait lente.

De plus, étant donné la définition du code d’état 401 , vous l’utilisez probablement mal. Le code 401 indique au client qu’il doit envoyer des informations d’authentification supplémentaires avec une demande donnée, par exemple http://en.wikipedia.org/wiki/Basic_access_authentication . Vous ne devriez donc pas être redirigé vers une autre URL.