首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在浏览器应用程序选项卡中使用NodeJs设置Cookie,即使其响应

问无法在浏览器应用程序选项卡中使用NodeJs设置Cookie,即使其响应
EN

Stack Overflow用户
提问于 2021-07-21 19:35:15
回答 1查看 76关注 0票数 1

我处于一种奇怪的情况下,浏览器中没有设置cookie,而浏览器中却显示了cookie

​

​

来自网络选项卡的响应屏幕截图

​

React应用程序在域上运行- https://2367cc15b.eu.ngrok.io

域上运行的节点Js - https://e17b14c2835b.ngrok.io

设置cookie的代码

代码语言:javascript
复制
res.cookie('holofyKey', holofyKey, { httpOnly: true, domain: '.ngrok.io', expires: new Date(new Date().getTime() + (1000 * 60 * 60 * 24 * 365)) });

我在我的中间件中使用app.use(cookieParser());。

我是不是漏掉了什么?

PS -我尝试从选项中删除httpOnly和域名仍然没有成功

EN

回答 1

Stack Overflow用户

发布于 2021-07-23 16:16:14

在尝试了两天所有可能的解决方案后,这终于对我起作用了

这就是您需要调用要从中设置cookie的api的方式。

代码语言:javascript
复制
const postHelper = async (url, body) => {
  return await fetch(url, {
    method: "POST",
    headers: {
      Accept: "applicaiton/json",
      "Content-Type": "application/json",
    },
    body: body && JSON.stringify(body),
    withCredentials: true, // should be there
    credentials: 'include' // should be there
  });
};

添加此代码后,您将收到CORS错误,因此请在您的服务器中添加此行代码

代码语言:javascript
复制
app.use(cors({ origin: true, credentials: true }));

最后

代码语言:javascript
复制
res.cookie('cookieKey', cookieKey, { expires: new Date(new Date().getTime() + (1000 * 60 * 60 * 24 * 365)), secure: true  });

PS -此解决方案将在跨域和相同域的情况下工作,但在跨域的情况下,大多数浏览器将不允许您设置cookie,直到用户同意。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68468778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档