jquery - JSESSIONID Cookie 被拒绝/丢失

标签 jquery ajax tomcat jsessionid

关于像 JESSIONID Cookie 这样的鬼魂,我一直在为一些谜团而苦苦挣扎。我正在使用 JESSIONID 在基于 AJAX 的站点中保持状态更改之间的 session 。这在已部署的服务器上运行良好,但在使用外部基于 XML 的 servlet 在本地主机上运行站点时却不行。

使用 HTTP header 工具,我已经能够确定 JSESID Cookie 根本没有设置:

localhost -> external: attempt login
external -> localhost: returns XML and correct Set-Cookie with JSESID
localhost -> external: sends next request with no JSESID Cookie (other cookies however, is > getting sent).

我在几台不同的计算机(和浏览器)上试过,结果都是一样的。然而奇怪的是,这些解决方案确实适用于移动设备(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);
}

最佳答案

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

关于jquery - JSESSIONID Cookie 被拒绝/丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10927835/

相关文章:

JAVA servlets - 打开消息弹出窗口

java - 如何在两个tomcat之间使用https时创建两个Tomcat满意的自签名证书?

eclipse - Apache Tomcat 的开普勒与 Indigo 对比

php - 如何从 ajax 调用获取图表数据到 javascript

javascript - 尝试从 jQuery 代码调用常用函数

javascript - 如何使用控制台日志到 ajax 参数?

php - 实时自动更新的 jQuery/Javascript 计算器(猜测 AJAX)

javascript - 任何人都知道如何在 asp.net telerik asp.net AJAX UI 中从下到上创建组合框

javascript - 在一页中使用 jQuery datepicker 和多个 django 表单

JQuery Accordion ,根据高度定位页脚