加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax – 什么导致cookie不能在客户端上设置?

发布时间:2020-12-16 03:07:29 所属栏目:百科 来源:网络整理
导读:我有一个使用jQuery.ajax的web应用程序来执行对另一个主机的请求(现在实际上是相同的,因为我使用的是“localhost”的不同端口).然后服务器返回一个cookie. 如Chrome的开发工具中所示,HTTP响应中的cookie值为 Set-Cookie: MyUserSession=JxQoyzYm1VfESmuh-v22
我有一个使用jQuery.ajax的web应用程序来执行对另一个主机的请求(现在实际上是相同的,因为我使用的是“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”,而我的网络应用程序位于“localhost:8003”,因此它们被视为与CORS不同的主机.因此,我对服务器的所有请求都包含在CORS安全规则中,尤其是 Requests with credentials.“凭据”包括该链接上标明的cookie,因此我不接受返回的cookie,因为我没有通过
xhrFields: {
  withCredentials: true
}

到jQuery的$.ajax函数.我还必须将该选项传递给后续的CORS请求才能发送cookie.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读