JSESSIONID Cookie拒绝/丢失

时间:2012-06-07 07:55:48

标签: jquery ajax tomcat jsessionid

对于像JESSIONID Cookie这样的鬼魂,有点神秘。我正在使用JESSIONID在基于AJAX的站点中保持状态更改之间的会话。这在部署的服务器上工作正常,但在使用外部基于XML的servlet在localhost上运行站点时则不行。

使用HTTP Header工具我已经能够确定JSESID Cookie没有设置:

  

localhost - >外部:尝试登录
  外部 - > localhost:使用JSESID返回XML并更正Set-Cookie   localhost - >外部:发送没有JSESID Cookie的下一个请求(但是,其他cookie正在获取)   发送)。

我尝试了几种不同的计算机(和浏览器),结果是一样的。奇怪的是,这些解决方案适用于移动设备(PhoneGap + Android / iOs)。基于此,我还试图从file://运行该网站,但没有运气。

由于已经部署了servlet(Tomcat 6),遗憾的是很少/没有我能够在这一点上进行更改,但据我所知,似乎问题就在这一点上。我还尝试了this thread中建议的解决方案#1。这确实设置了一个名为cookie的JSESID,但内容却充满了“乱码”。

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);
}

2 个答案:

答案 0 :(得分:0)

原来这是一个域名问题。如果设置cookie的域与请求cookie的域完全相同,则桌面浏览器将仅接受JSES Cookie。奇怪的是,在Android浏览器和Safari等移动浏览器上并非如此。

答案 1 :(得分:0)

我遇到了同样的问题,并试图在几天内定期解决。搜索和阅读没有给出结果。

然后我在iphone中打开了safari设置并清除了历史记录,Cookie数据和删除的网站数据。而且意外的是,现在一切都很好。祝你好运