为什么编辑状态码时不能正确表示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。