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

时间:2016-05-17 11:09:54

标签: javascript ajax cookies cors

There is a node server which on accepting correct credentials of a user, passport js creates and sends a session cookie in request header by name of set-cookie.

But when I do an ajax request from my chrome browser accepts the request it doesn't adds the cookie on the client side . so when a new request generates from client side , the server doesn't authenticates it and throws 401.

I am confused whether it is a browser issue or an I am missing something from AJAX request

Please help.

4 个答案:

答案 0 :(得分:2)

If you are using 'fetch', you need to add a key

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

答案 1 :(得分:2)

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

我想出的原因是允许的起源。我需要在后端设置允许的起源。

如果使用凭证属性传递,XHR by是一个安全请求。因此,如果允许的源与请求源匹配,则客户端浏览器仅保存cookie。

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

在节点结束时,我需要origin: 'domain.com' 在前端我需要将我的服务器(localhost)设置为指向test.domain.com。和宾果游戏。它奏效了。!

答案 2 :(得分:1)

如果您正在使用XHR请求,则需要将withCredentials设置为true。它应该修复问题,如果没有请提供代码

答案 3 :(得分:1)

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

来自localhost:4200上的客户端到localhost:24336上的WebApi的请求。 已经进行了所有CORS设置,“Access-Control-Allow-Credentials”值=“true”“Access-Control-Allow-Origin”值=“http:// localhost:4200”等,并且正在通过{withCredentials:true在每个请求中,例如http.post(url,{},{withCredentials:true})。

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

,{provide: RequestOptions, useClass: MyOptions}