本地401工作,临时服务器获得302

我可能不会得到帮助第一次刺伤所需的所有必要信息,但我会尽我所能并在我们进行时编辑它。

我有一个使用Spring-Security-Core插件的Grails 1.3.7应用程序。 我正在处理处理会话超时和ajax请求的代码。 在LoginController中,我有以下内容:

def authAjax = { session.SPRING_SECURITY_SAVED_REQUEST_KEY = null response.sendError HttpServletResponse.SC_UNAUTHORIZED } 

在全局JavaScript文件中,我有以下内容:

 $.ajaxSetup({ error: function(xhr, status, err) { if (xhr.status == 401) { $('#login-dialog').dialog({ // show ajax login }); } } }); 

当我在本地运行时,一切都按预期工作。 当我的会话超时时,我在FireBug控制台中看到一个401,然后我得到了Login对话框。 当我将它部署到我们的登台服务器时,我只得到了302并且永远不会进入authAjax因为永远不会得到401。

本地开发和分段之间的主要区别在于我使用mod_proxy和apache httpd来代替来回Tomcat的请求。 我的假设是这就是为什么我得到302而不是401,但我不是100%肯定。

我的问题

  1. 是mod_proxy导致302
  2. 我如何解决这个问题,以便它像在本地一样工作,但仍然使用mod_proxy。

更新:

根据最近的评论,在本地,当我得到401时,我看到了这个:

 POST https://localhost:8080/admin/bookProject/edit 302 Moved Temporarily GET http://localhost:8080/login/authAjax 401 Unauthorized 

我正在看authAjax方法的调试

在我获得的登台服务器上:

 POST https://server.com/admin/bookProject/edit 302 Moved Temporarily 

没有看到authAjax的任何调试,所以我甚至没有到达那里。

您的Ajax调用代码:

 statusCode: { 401: function(){ // redirect code to login page } }