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.
答案 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}