如何在开发本地主机上保存 cookie
How to save cookie on development localhost
我有 node.js 带有一些端点的 express 后端,所有这些都可以用 curl 或邮递员进行很好的测试,但是在我的 client-side 和 angular 的 http.post 请求上我得到了正确的响应,但没有保存 cookie。
我试过更改我的本地主机 dns,经过一些尝试我最终使用 127.0.0.1:4200 客户端和 127.0.0.1:3000 后端。
后端代码:
const express = require('express');
const bodyParser = require('body-parser');
const webpush = require('web-push');
const cors = require('cors');
const cookieParser = require('cookie-parser');
const app = express();
app.use(cors());
app.use(bodyParser.json());
app.use(cookieParser());
app.post(path, /*here I call my function*/);
[...]
/*in my function i set cookie with these lines*/
res.cookie('userData',
{token: token,},{ httpOnly: true, secure: false }
);
客户代码:
[...]
constructor(private http: HttpClient) {}
[...]
/*request on my button click*/
this.http
.post<AuthResponse>(path, bodyReq)
谁在乎这些代码,让我们看看结果。
在响应 header 中,我可以看到 set-cookie,当我切换到请求的 cookie 选项卡时,我可以正确看到它,但是..
有些东西告诉 chrome 不要保存我的 cookie,他收到了!!
我已经在网上查看了有关 cors、域、cookie 设置的信息。
什么都不适合我。
感谢您的帮助。
BENARD Patrick 的提示是正确的!!
要解决我的问题,请在客户端和服务器上添加 withCredentials(使用此解决方案我必须指定域)
客户代码:
return this.http
.get<AuthResponse>(path, {
withCredentials: true,
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': 'www.dns_to_127.0.0.1.com:4200',
}),
})
服务器代码:
app.use(
cors({
origin: 'http://www.dns_to_127.0.0.1.com:4200',
credentials: true,
})
);
凭据:配置 Access-Control-Allow-Credentials CORS header。设置为 true 以传递 header
我有 node.js 带有一些端点的 express 后端,所有这些都可以用 curl 或邮递员进行很好的测试,但是在我的 client-side 和 angular 的 http.post 请求上我得到了正确的响应,但没有保存 cookie。 我试过更改我的本地主机 dns,经过一些尝试我最终使用 127.0.0.1:4200 客户端和 127.0.0.1:3000 后端。
后端代码:
const express = require('express');
const bodyParser = require('body-parser');
const webpush = require('web-push');
const cors = require('cors');
const cookieParser = require('cookie-parser');
const app = express();
app.use(cors());
app.use(bodyParser.json());
app.use(cookieParser());
app.post(path, /*here I call my function*/);
[...]
/*in my function i set cookie with these lines*/
res.cookie('userData',
{token: token,},{ httpOnly: true, secure: false }
);
客户代码:
[...]
constructor(private http: HttpClient) {}
[...]
/*request on my button click*/
this.http
.post<AuthResponse>(path, bodyReq)
谁在乎这些代码,让我们看看结果。
在响应 header 中,我可以看到 set-cookie,当我切换到请求的 cookie 选项卡时,我可以正确看到它,但是..
有些东西告诉 chrome 不要保存我的 cookie,他收到了!! 我已经在网上查看了有关 cors、域、cookie 设置的信息。 什么都不适合我。 感谢您的帮助。
BENARD Patrick 的提示是正确的!!
要解决我的问题,请在客户端和服务器上添加 withCredentials(使用此解决方案我必须指定域)
客户代码:
return this.http
.get<AuthResponse>(path, {
withCredentials: true,
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': 'www.dns_to_127.0.0.1.com:4200',
}),
})
服务器代码:
app.use(
cors({
origin: 'http://www.dns_to_127.0.0.1.com:4200',
credentials: true,
})
);
凭据:配置 Access-Control-Allow-Credentials CORS header。设置为 true 以传递 header