【发布时间】:2016-09-13 10:52:20
【问题描述】:
有一个节点服务器在接受用户的正确凭据后,passport js 会在请求标头中按 set-cookie 的名称创建并发送会话 cookie。
但是当我从我的 chrome 浏览器执行 ajax 请求 接受请求时,它不会在客户端添加 cookie。因此,当从客户端生成新请求时,服务器不会对其进行身份验证并抛出 401。
我很困惑是浏览器问题还是我从 AJAX 请求中遗漏了什么
请帮忙。
【问题讨论】:
-
你碰巧知道哪个域服务器正在创建 cookie 吗? cookie域和网站域冲突的可能原因之一。
-
简单的 cors-needing 请求(来自第 3 方的请求)不允许使用 cookie。
-
您能分享一下您用于执行 ajax 请求的代码,以及身份验证服务器和网站的域吗?正如@MaheshChavda 建议的那样,可能是 CORS 问题;某些浏览器在执行跨域 ajax 请求时拒绝处理
Set-Cookie标头。您可以使用credentials添加适当的选项,如此答案stackoverflow.com/questions/8863571/… 或(带角度)中建议的那样:stackoverflow.com/questions/19383311/…。 -
检查服务器是否设置正确也很有意义:stackoverflow.com/questions/37090621/…
标签: javascript ajax cookies cross-domain