如何在开发本地主机上保存 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