2012-06-07 2 views
1

Борьба с немного тайной относительно призрака, как JESSIONID Cookie. Я использую JESSIONID для сохранения сеансов между изменениями состояния на сайте AJAX. Это отлично работает на развернутом сервере, но не при запуске сайта на localhost с использованием внешнего сервлета на основе XML.JSESSIONID Cookie отклонено/потеряно

Использование инструментов HTTP заголовков я был в состоянии определить, что JSESID Cookie просто не установлена:

локальных -> внешняя: попытка вход
внешнего -> LOCALHOST: возвращает XML и правильный комплект- Cookie с JSESID
localhost -> внешний: отправляет следующий запрос без JSESID Cookie (другие файлы cookie, однако, есть> отправлено).

Я пробовал несколько компьютеров (и браузеров), и результат тот же. Странно, однако, решения работают на мобильных устройствах (PhoneGap + Android/iOs). Исходя из этого, я также попытался запустить сайт из файла: //, но не повезло.

Поскольку сервлет уже развернут (Tomcat 6), к сожалению, я мало что могу изменить с этой целью, но, насколько я могу судить, маловероятно, что проблема в этом. Я также попытался решить проблему №1, как было предложено в this thread. Это устанавливает JSESID с именем cookie, но контент наполняется «тарабарщиной».

function postDataToBean(formId, callbackFunc, callbackError) 
{ 
    $.ajaxSetup ({ 
     cache: false 
    }); 

    var_form_data = $("#" + formId).serialize(); 

    var request = $.ajax({ 
      url: getAppBackEndURL() + $("#" + formId).attr("action"), 
      type: "POST", 
      data: var_form_data, 
      dataType: "xml", 
      contentType : "application/x-www-form-urlencoded"  
     }); 

    request.done(callbackFunc); 
    request.fail(callbackError); 
} 
+0

Как выглядит весь ответ Set-Cookie с сервера? Каковы точные URL-адреса, к которым вы пытаетесь получить доступ? –

+0

у меня нет доступа к проекту на данный момент, но с верхней части моей головы, я считаю, что ответ выглядел примерно так: Set-Cookie: JSESSIONID = XXXXXXXXXXXXXXXXXXXXXXXXXXXX; PATH =/ Проект работает на localhost, в то время как сервлет/служба, с которой я общаюсь, находится на mydomain.com (я буду обновлять реальный URL-адрес как можно скорее). –

+0

Пожалуйста, разместите весь Set-Cookie, когда у вас есть его, включая все параметры. –

ответ

0

Оказывается, это проблема с доменом. Настольные браузеры будут принимать только JSES Cookies, если домен, который устанавливает cookie, является тем же самым, что и тот, который запрашивает его. Как бы странно, это не так в мобильных браузерах, таких как Android Browser и Safari.

0

У меня была такая же проблема, и периодически пытаясь разрешить ее несколько дней. Поиск и чтение не дали результата.

Затем я открыл настройки сафари в iphone и очистил историю, данные cookie и удалил данные веб-сайта. И удивление, теперь все в порядке. удачи

Смежные вопросы