CORS-服务器端cookie没有保存在chrome浏览器上

CORS - Server side cookie is not getting saved on chrome browser

本文关键字:存在 chrome 浏览器 保存 服务器端 cookie CORS-      更新时间:2023-09-26

有一个节点服务器,在接受用户的正确凭据后,passport-js会在请求头中以设置cookie的名称创建并发送会话cookie。

但是,当我从chrome浏览器执行ajax请求时,它不会在客户端添加cookie。因此,当客户端生成新请求时,服务器不会对其进行身份验证并抛出401。

我很困惑是浏览器问题还是AJAX请求中缺少了什么

请帮忙。

如果使用"fetch",则需要添加一个密钥

{
        headers: req.headers,
        credentials: 'include'
}

感谢您的回答。我正在尝试withCredentials的东西,但会话cookie没有在我的本地设置。

我弄清楚的原因是允许的起源。我需要在后端设置允许的原点。

如果使用凭据属性传递XHR by,则它是一个安全请求。因此,客户端浏览器只有在允许的来源与请求来源匹配时才保存cookie。

因此,简单的解决方案是将主机更改为与允许的来源相匹配的主机。

在节点端,我需要执行origin: 'domain.com'在前端,我需要将我的服务器(localhost)设置为指向test.domain.com.和bingo。成功了。!

我在Chrome中使用Angular 4时遇到了这个问题(IE正在工作)。

从本地主机:4200上的客户端到本地主机:24336上的WebApi的请求。具有所有CORS设置,"访问控制允许凭据"value="true"访问控制许可来源"value="http://localhost:4200"等,并在每个请求中传递{withCredentials:true},例如http.post(url,{},{withCredentials:ttrue})。

对我来说,修复方法是按照以下步骤将默认的RequestOptions设置为{withCredentials:true}https://angular.io/api/http/BaseRequestOptions并将以下内容添加到提供程序中:在app.module.ts 中

,{provide: RequestOptions, useClass: MyOptions}

如果使用XHR请求,则需要将withCredentials设置为true。如果没有,它应该可以解决问题。请提供代码