Javascript 为什么浏览器会忽略set cookie头,而不会使用fetch从Ajax调用中保存cookie?

Javascript 为什么浏览器会忽略set cookie头,而不会使用fetch从Ajax调用中保存cookie?,javascript,ajax,cookies,fetch,Javascript,Ajax,Cookies,Fetch,出于某种原因,我的浏览器(我已经尝试了几个)没有设置cookie,即使当使用api通过Ajax发出GET调用时,服务器返回了有效的SETcookie响应 如果我仅仅通过将URL放入浏览器来进行相同的GET调用,浏览器将遵守(相同的)set cookie响应头,并保存cookie 我已经通过LiveHeaders和Chrome网络检查器检查了请求和响应头,没有区别 编辑:澄清一下,ajax向服务器发送cookie并没有问题。这是一个问题,当响应返回时,浏览器根本不保存cookies,并且返回了有效

出于某种原因,我的浏览器(我已经尝试了几个)没有设置cookie,即使当使用api通过Ajax发出GET调用时,服务器返回了有效的SETcookie响应

如果我仅仅通过将URL放入浏览器来进行相同的GET调用,浏览器将遵守(相同的)set cookie响应头,并保存cookie

我已经通过LiveHeaders和Chrome网络检查器检查了请求和响应头,没有区别


编辑:澄清一下,ajax向服务器发送cookie并没有问题。这是一个问题,当响应返回时,浏览器根本不保存cookies,并且返回了有效的设置cookies头(根据文档,无论是否使用ajax,都应遵守设置cookies头)。

经过多次讨论,我通过将请求的“凭据”属性设置为“包含”解决了这个问题。我的印象是,这只控制了在获取请求时向服务器发送cookie,但显然,至少在我使用的实现中,如果不设置cookie,也意味着如果cookie从服务器发送回来,则不会保存cookie

从规范

请求具有关联的凭据模式,即“忽略”, “同源”,或“包括”。除非另有说明,否则为“省略”

请求的凭据模式控制会话期间的凭据流 取来当请求的模式为“导航”时,其凭据模式为 假设为“包含”和“获取”当前不考虑其他 价值观如果HTML在此发生更改,则此标准将需要相应的 变化

凭据是HTTP Cookie、TLS客户端证书和身份验证条目


和那个问题不一样@Sam Axe。问题不是后续请求,而是浏览器根本没有保存cookies。AJAX请求是否与当前页面位于同一来源(协议、端口、域)?是的,没有CORS含义。