在我的 Webapp(运行于localhost/myApp/
)中,我有一个 ajax 调用,例如:
$.ajax({
type: "GET",
url: "http://localhost:8080/my.module/Login/login?user=abc&password=123",
xhrFields: {
withCredentials: true,
},
success: onResult,
error: onError,
});
登录服务器。如果登录成功,服务器会以布尔值响应,并且响应还包含此标头:
Set-Cookie: JSESSIONID=167C57FA1E3529433938E744F7C4AC52; Path=/my.module
使用之前设置的 xhrField "withCredentials: true",浏览器会自动处理 cookie 并在所有以下请求中附加 Cookie 标头:
Cookie: JSESSIONID=167C57FA1E3529433938E744F7C4AC52
这工作得很好。但是现在我遇到了问题,服务器有一个错误,因此在调用注销接口时它不会删除会话,会话无法关闭(并且我无权访问服务器)。为了正确注销,我必须删除客户端上的会话 cookie,以便从服务器获取一个新的。但我找不到访问或删除 cookie 的方法,document.cookie
我的 webapp 中的变量为空。我也尝试从and读取document.cookie
变量,但它始终为空。我尝试的另一件事是用localhost/myApp/my.module/
localhost/my.module/
document.cookie = "JSESSIONID=ABC; Path=/my.module";
但是服务器请求仍然具有以前的 cookie。谁能告诉我如何删除它?
我知道这个解决方案将是一个 hack,但这就是我正在寻找的,因为服务器程序员无法及时修复错误并要求我在客户端上实现这样的 hack。