gpt4 book ai didi

java - Cookie 未在后续请求中传递

转载 作者:行者123 更新时间:2023-11-30 00:30:51 24 4
gpt4 key购买 nike

我在尝试使用 AJAX 向我的 Spring MVC Controller 发出后续请求时遇到传递 cookie 的问题。

例如我有一个 /login 端点,我通过 POST 方法将一些 JSON 传递到该端点并设置 cookie。我在 Firebug 中看到了 cookie:

enter image description here

如您所见,它就在那里。我正在创建一个这样的 cookie:

NewCookie cookie = new NewCookie(new Cookie(SECURITY_TICKET, encodedTicket, configKey, null), null, (int) TimeUnit.MINUTES.toSeconds(expireTime), expireTimeDate, false, false)

并将其设置为 HTTP header :

httpHeaders.add(HttpHeaders.SET_COOKIE, cookie.toString());

然后将这些 header 添加到 ResponseEntity,如下所示:

ResponseEntity entity = new ResponseEntity<>(this.entity, this.httpHeaders, this.status)

并返回此响应实体。我的 Controller 的方法都是基于 REST 的。

然后我尝试在成功登录后调用另一个 (/search) 端点,哪个功能需要 cookie,但显然失败了,因为由于某种原因 cookie 没有被传回。

我的 AJAX 调用如下所示:

$(function () {
$.ajax({
url: 'http://localhost:8080/dev-citigroup-citi/login',
type: 'POST',
dataType: 'json',
data: '{ "username": "client1", "password": "*******", "platform": "iOS", "UUID": "321321321", "application": "CitiReach", "applicationVersion": "1.0" }',
success: function (data, status, xhr) {
$.ajax({
url: 'http://localhost:8080/dev-citigroup-citi/search/eventattendee?q=*:*&start=0&rows=1&wt=json&indent=true',
type: 'GET',
xhrFields: { withCredentials:true },
success: function (data, status, xhr) {
console.log(data);
},
error: function (jqXHR) {
console.log(jqXHR);
}
});
},
error: function (jqXHR) {
console.log(jqXHR);
}
});
});

正如我提到的,/login 正常,但另一个调用失败。我正在添加 xhrFields: { withCredentials:true } 应该在 /search 请求中包含 cookie 但由于某些原因它不是。

我还正确设置了 CORS:

Access-Control-Allow-Origin: http://localhost:63342
Access-Control-Allow-Credentials: true

http://localhost:63342 是请求的来源,它在 CORS header 中配置。

知道这里可能出了什么问题吗?

最佳答案

我找到了解决方案,所以我没有在方法级别上使用 xhrFields: { withCredentials:true },而是将其全局放置:

    $.ajaxSetup({
xhrFields: {
withCredentials: true
}
});

现在在后续请求中传递 cookie。不知道为什么它在方法级别上不起作用,可能是 jquery 中的错误...

我使用的 jQuery 版本:2.1.3

也许这对将来的人有帮助。

关于java - Cookie 未在后续请求中传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29558111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com