我正在编写一个应用程序,有人可以在其中编辑网页上的段落。jQuery 用于向处理程序发送和接收已编辑的段落数据,处理程序将其保存或从数据库中读取。问题是如果表单身份验证超时,我会从我的处理程序中取回登录页面。如果身份验证超时并将整个页面重定向到登录页面,我有什么方法可以在客户端或服务器上检测到?
Sprintstar
问问题
1846 次
2 回答
1
在我的应用程序中,在客户端,我检查返回页面的 HTTP 状态。如果是 401(未经授权的错误),我会在模式对话框中显示登录表单。您可以像这样重新进行身份验证,或者只是使用重定向
window.location = 'http://someurl.com';
这需要服务器的合作才能返回 401,但这对我来说似乎是最干净的方式。
于 2009-01-14T15:01:58.097 回答
1
我最近完成了一种处理 401 的方法,我认为它也适用于您。.NET 过去版本的问题是错误页面不会返回正确的错误代码,它们只是 302 到指定页面。
使用 .NET 3.5,您的错误处理程序可以使用 redirectMode 来“重写”而不是“重定向”:
<customErrors mode="On" defaultRedirect="/err.aspx" redirectMode="ResponseRewrite">
<error statusCode="404" redirect="/404.aspx"/>
</customErrors>
由于所有请求(包括 Web 服务调用)现在都将返回正确的 HTTP 状态代码,因此您可以在 javascript 中正确使用 404 / 401 / 500 代码。
然后,在您的客户端代码中(这是在 jQuery 中并且正在重定向任何错误,不仅是 401,而且您明白了):
$(document).ajaxError(function(event, XMLHttpRequest, ajaxOptions, thrownError) {
window.location.href('/error.aspx');
});
于 2009-09-29T19:22:10.347 回答