gpt4 book ai didi

ajax - 什么会导致客户端不设置 cookie?

转载 作者:可可西里 更新时间:2023-11-01 15:07:56 26 4
gpt4 key购买 nike

我有一个 Web 应用程序,它使用 jQuery.ajax 向另一台主机执行请求(现在实际上是一样的,因为我使用的是“localhost”的不同端口)。然后服务器返回一个 cookie。

Chrome 开发工具中显示的 HTTP 响应中的 cookie 值是

Set-Cookie: MyUserSession=JxQoyzYm1VfESmuh-v22wyiyLREyOkuQWauziTrimjKo=;expires=Sun, 10 Feb 2013 22:08:47 GMT;path=/api/rest/

因此还有 4 小时后到期。

但是,cookie 不会随后续请求一起存储和发送(已在 Chrome 和 Firefox 中测试)。我首先认为它必须是“2013 年 2 月 10 日”而不是“2013 年 2 月 10 日”,但这没有什么区别。 Chrome 还在响应的 cookie 选项卡上将“过期”显示为“无效日期”,但这也可能是 Dev Tools bug。 .

有什么想法吗?

最佳答案

我想我找到了解决方案。由于在开发过程中,我的服务器位于“localhost:30002”,而我的 Web 应用程序位于“localhost:8003”,因此关于 CORS,它们被视为不同主机。因此,我对服务器的所有请求都包含在 CORS 安全规则中,尤其是 Requests with credentials . “凭据”包括该链接上注明的 cookie,因此不接受返回的 cookie,因为我没有通过

xhrFields: {
withCredentials: true
}

jQuery 的$.ajax 函数。我还必须将该选项传递给后续的 CORS 请求,以便发送 cookie。

我在服务器端添加了 header Access-Control-Allow-Credentials: true 并将 Access-Control-Allow-Origin header 从通配符更改为 http://localhost:8003(端口号很重要!)。该解决方案现在适用于我,并且存储了 cookie。

关于ajax - 什么会导致客户端不设置 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14801021/

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