为什么编辑状态码时不能正确表示redirect?

标准res.redirect('/some/path'); 如预期的那样运行,并立即将请求redirect到/some/path ,但是如果我添加一个状态代码,例如res.redirect(401, '/some/path')并导航到redirect页面,则express不会redirect到/some/path ,而我只是得到以下页面:

 <p>Unauthorized. Redirecting to <a href="/some/path">/</a></p> 

它永远不会redirect。 对于我刚才提供的任何状态码,这都是一样的。

为什么没有指定的代码redirect工作,因为我期待它,我怎样才能返回一个自定义的状态码,并redirect到不同的path?

只有在3xx范围内的状态代码和201/202状态中定义了用于redirect某人的Location标题的行为。 由于您将状态码设置为401,因此忽略标题并仅显示响应内容。 Express恰恰包含了一些很好的文本,解释了用户在redirect速度缓慢的情况下被redirect。

另外,鉴于401状态码的定义,您可能会误用它。 401代码是让客户端知道它需要发送额外的authentication信息,例如http://en.wikipedia.org/wiki/Basic_access_authentication ,所以你不应该被redirect到另一个URL。