Javascript 在用户尝试登录之前发送401错误是否正确?

Javascript 在用户尝试登录之前发送401错误是否正确?,javascript,api,rest,Javascript,Api,Rest,在我正在开发的restapi中,有人告诉我直接向“getcurrentuser(/me)”url发送请求,而不检查是否有会话令牌,并在收到401响应时将其重定向到登录页面 这是正确的吗?我认为浏览器不应该收到4xx响应,除非用户做了他不应该做的事情 我认为浏览器不应该收到4xx响应,除非用户做了他不应该做的事情 这比标准中描述的更具限制性,请参见 状态代码的4xx(客户端错误)类表示客户端似乎已出错 服务器无法区分用户的错误和用户代理的错误——只有一个HTTP请求,必须自己判断 表达同样想法的另

在我正在开发的restapi中,有人告诉我直接向“getcurrentuser(/me)”url发送请求,而不检查是否有会话令牌,并在收到401响应时将其重定向到登录页面

这是正确的吗?我认为浏览器不应该收到4xx响应,除非用户做了他不应该做的事情

我认为浏览器不应该收到4xx响应,除非用户做了他不应该做的事情

这比标准中描述的更具限制性,请参见

状态代码的4xx(客户端错误)类表示客户端似乎已出错

服务器无法区分用户的错误和用户代理的错误——只有一个HTTP请求,必须自己判断


表达同样想法的另一种方式:暗示有人类用户的客户端应该得到与没有人类用户的客户端相同的自我描述响应。

我们正是这样做的。我们基本上发送一个HTTP请求,如果它以
401
的形式返回,我们知道我们需要用户登录

我们还发送一个
链接
标题,告诉客户端用户应该去哪里登录:

HTTP/1.1 401 Unauthorized
Link: </login>; rel="authenticate"
HTTP/1.1 401未经授权
链接:;rel=“验证”

向用户发送400个类错误没有错。如果他们未经授权访问某个资源,401是正确的错误代码是的,但如果前端知道用户未经授权,则尝试访问私有资源是否正常?@从前端的角度来看,这无关紧要。它所关心的是防止未经授权的用户访问私有数据。你有一些大型商业应用程序的例子吗?我已经检查了一些(Netflix、Paypal、Facebook、Google),但他们没有这样做。我发现了一个这样发展的小网站,但我不会把它作为关于最佳api设计实践的模型。