与 JESSIONID Cookie 这样的鬼魂有关的谜团苦苦挣扎。我正在使用 JESSIONID 在基于 AJAX 的站点中保持状态更改之间的会话。这在已部署的服务器上运行良好,但在使用基于 XML 的外部 servlet 在 localhost 上运行站点时却不行。
使用 HTTP Header 工具,我已经能够确定 JSESID Cookie 根本没有设置:
localhost -> external:尝试登录
external -> localhost:返回 XML 并使用 JSESID 正确的 Set-Cookie
localhost -> external:发送没有 JSESID Cookie 的下一个请求(但是,其他 cookie > 正在发送)。
我在几台不同的计算机(和浏览器)上尝试过,结果是一样的。然而奇怪的是,这些解决方案确实适用于移动设备(PhoneGap + Android / iOs)。基于此,我还尝试从 file:// 运行该站点,但没有运气。
由于 servlet 已经部署(Tomcat 6),不幸的是,我无法在这方面进行任何更改,但据我所知,问题出在这方面的可能性很小。我还尝试了此线程中建议的解决方案#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);
}