【发布时间】:2020-10-26 06:44:16
【问题描述】:
我正在使用 React 和 Next.js 在前端和 Node.js 在后端使用 Express 的应用程序中工作。 我的登录使用 cookie,在 localhost 中效果更好,但是当我进行部署时,我有两个应用程序。我的前端应用程序部署在 now.sh 中,我的后端应用程序部署在 Heroku 中。当我尝试在生产中发出登录请求时,一切正常,cookie 在响应中,并且标题“Set-Cookie”存在。但是我的浏览器(Chrome)没有将 cookie 存储在 Application >> Cookies 中,显然我的前端应用程序不知道 cookie 并且它是未定义的
这是我的代码:
Server.js
app.use(
cors({
credentials: true,
origin: process.env.CLIENT_URL, // contains the frontend url
methods: ["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"],
allowedHeaders: ["Content-Type", "Authorization"],
})
);
当我对前端做出响应时验证路由
return res
.cookie("token", session.token, {
httpOnly: true,
sameSite: "None",
maxAge: 1209600000,
secure: process.env.NODE_ENV === "production",
})
.status(200)
.json({
success: true,
token: session.token,
user,
});
在前端发出请求
const { data } = await Axios.post(login, // backend url to make the request
{ email, password },
{ withCredentials: true });
浏览器中的响应
Cookie 标签中的 Cookie 信息
【问题讨论】:
-
如果您使用 express 来调试您的问题的一种方法,创建一个中间件,该中间件将在服务器中打印请求的标头以查看您正在使用的信息,我猜应该是 @987654326 @
-
感谢您的建议!我正在尝试
-
@NicolásLeal 你能解决这个问题吗?我需要将我的应用程序投入生产并面临完全相同的问题
-
@KaranKumar no ):我无法解决这个问题。我认为谷歌改变了他们的政策,现在我们不能提出这种类型的请求。
标签: javascript node.js reactjs cookies next.js