本地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%肯定。
我的问题
- 是mod_proxy导致302
- 我如何解决这个问题,以便它像在本地一样工作,但仍然使用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 } }