Локально 401 работает, промежуточный сервер получает вместо 302 - PullRequest
3 голосов
/ 11 августа 2011

Я, вероятно, не собираюсь получать всю необходимую информацию, чтобы помочь с первым ударом, но я сделаю все возможное, чтобы отредактировать это по ходу дела.

У меня есть Grails1.3.7 приложение, использующее плагин Spring-Security-Core.Я работаю над кодом, который имеет дело с тайм-аутом сеанса и запросами 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 });
       }
     }
});

Когда я запускаю это локально, все работает как положено.Когда у меня истекает время сеанса, я вижу 401 в консоли FireBug и получаю диалог входа в систему.Когда я развертываю это на нашем промежуточном сервере, я получаю только 302 и никогда не получаю в authAjax, поэтому никогда не получаю 401.

Основное различие между локальным dev и staging в том, что я использую mod_proxy с apachehttpd для передачи запросов туда и обратно в 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, так что я даже не добираюсь туда.

1 Ответ

0 голосов
/ 11 декабря 2017

Код для вашего вызова Ajax:

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