我有一个 MVC 4 应用程序。当我发出 ajax 请求并且服务器超时时,它会在客户端引发异常:
加载资源失败:服务器响应状态为 500(内部服务器错误)
所以我的问题是
a) 为什么它不抛出 401?
b) 如果我检查状态码 500 来检查会话是否超时,是否合适?这会是一个有效的条件吗?
我有一个 MVC 4 应用程序。当我发出 ajax 请求并且服务器超时时,它会在客户端引发异常:
加载资源失败:服务器响应状态为 500(内部服务器错误)
所以我的问题是
a) 为什么它不抛出 401?
b) 如果我检查状态码 500 来检查会话是否超时,是否合适?这会是一个有效的条件吗?
首先,您可以在 msdn 中查看有关状态代码的这篇文章: https ://msdn.microsoft.com/en-us/library/aa287675(v=vs.71).aspx
a)它不返回未授权(401)状态码,因为它的内部服务器错误 - 服务器没有响应,它没有授权失败
HTTP 错误 500 内部服务器错误 - 表示服务器出现问题,因此它是正确的响应,您可以查看以下文章:http: //www.checkupdown.com/status/E500.html
b) 您可以使用操作过滤器或全局处理程序编写授权失败/会话超时的适当处理,无需检查状态代码 500,这样结束这种情况是错误的。对于会话过期处理,您可以查看这篇文章: http ://forums.asp.net/t/1523066.aspx?Redirect+to+Login+after+Session+is+Expired+in+MVC