GET与POST Ajax请求中的不同行为

时间:2011-07-18 20:36:54

标签: ajax asp.net-mvc-2 forms-authentication

我们有一个MVC应用程序,它使用AJAX端点的控制器,以及FormsAuth进行身份验证。

我遇到了一个有趣的场景,其中GET请求的行为与POST请求的行为不同(均为未经授权的用户)。

在这种特殊情况下,我们的自定义ControllerFactory运行以下代码来尝试访问此控制器:

FormsAuthentication.SignOut();
requestContext.HttpContext.Response.Redirect(FormsAuthentication.LoginUrl);
throw new UnauthorizedAccessException();

(我意识到在AJAX请求中重定向是没有意义的,但请耐心等待。)

当我对此控制器执行GET请求(AJAX)时,客户端会收到401 - Unauthorized异常,我可以在客户端捕获该异常并将用户重定向到登录页面。

当我向这个控制器发出POST请求(AJAX)时,我得到一个302,我的请求被重定向到我的登录页面。

为什么GET和POST请求的行为不同?

1 个答案:

答案 0 :(得分:1)

所以我接受了Darin的建议并做了一些重构,我不再遇到这个问题了。 :)我发现了我的问题的根源,即我们有一个没有IExceptionFilter属性的MVC错误处理属性,所以有些东西发生在非确定的订单中。感谢对接的有益踢。 ;)