JESSIONIDCookieのような幽霊に関するちょっとした謎に苦しんでいます。JESSIONIDを使用して、AJAXベースのサイトの状態変更間のセッションを維持しています。これは、デプロイされたサーバーでは正常に機能しますが、外部XMLベースのサーブレットを使用してローカルホストでサイトを実行している場合は機能しません。
HTTPヘッダーツールを使用して、JSESIDCookieが単に設定されていないことを確認できました。
localhost-> external:ログインを試行します
external-> localhost:XMLを返し、JSESIDを使用してSet-Cookieを修正します
localhost-> external:JSESID Cookieなしで次のリクエストを送信します(ただし、他のCookieは送信されます)。
私はいくつかの異なるコンピューター(およびブラウザー)で試しましたが、結果は同じです。ただし、奇妙なことに、ソリューションはモバイルデバイス(PhoneGap + Android / iOs)で機能します。これに基づいて、私もfile://からサイトを実行しようとしましたが、運がありませんでした。
サーブレットはすでにデプロイされているため(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);
}