Localmente 401 trabajando, servidor de pruebas que obtiene un 302 en su lugar

Probablemente no voy a obtener toda la información necesaria para ayudar en la primera puñalada, pero haré lo mejor que pueda y editaré esto a medida que avancemos.

Tengo una aplicación Grails 1.3.7 que usa el complemento Spring-Security-Core. Estoy trabajando en un código que se ocupa de los tiempos de espera de las sesiones y las solicitudes ajax. En el LoginController, tengo lo siguiente:

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

En un archivo global de JavaScript, tengo lo siguiente:

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

Cuando ejecuto esto localmente todo funciona como se espera. Cuando se agota el tiempo de mi sesión, veo un 401 en la consola FireBug y aparece el cuadro de diálogo Iniciar sesión. Cuando implemento esto en nuestro servidor de pruebas, solo obtengo el 302 y nunca me meto en authAjax, por lo que nunca obtengo el 401.

La principal diferencia entre el desarrollo local y la puesta en escena es que estoy usando mod_proxy con apache httpd para enviar las solicitudes a Tomcat. Supongo que esta es la razón por la que recibo un 302 y no el 401, pero no estoy 100% seguro.

Mis preguntas)

  1. Es el mod_proxy causando el 302
  2. ¿Cómo puedo resolver esto para que funcione como lo hace localmente, pero sigue usando mod_proxy?

ACTUALIZAR:

Por los comentarios recientes, a nivel local, cuando recibo el 401, estoy viendo esto:

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

Y estoy viendo la depuración del método authAjax

En el servidor de ensayo estoy recibiendo:

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

Y no veo ninguna depuración de authAjax, por lo que ni siquiera estoy llegando.

Código para su llamada Ajax:

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