过去两天我一直在尝试解决这个问题,但仍然没有成功。这里提供的答案都没有解决我关于浏览器响应中 cookie 的问题。
我有 Node.js (Express.js) 代码,它在我的本地计算机 localhost:8088 上运行良好。当用户登录时,我会在浏览器中收到 cookie。
但是,将我的代码上传到 AWS EC2 nginx 服务器后,我无法在浏览器中获取 cookie,尽管我能够在 Postman 中接收它们。有人可以帮我解决这个问题吗?
Express.js
const attachCookiesToResponse = ({ res, user, refreshToken }) => {
const accessTokenJWT = createJWT({ payload: { user } })
const refreshTokenJWT = createJWT({ payload: { user, refreshToken } })
const oneDay = 24 * 60 * 60 * 1000
const oneWeek = oneDay * 7
res.cookie('accessToken', accessTokenJWT, {
httpOnly: true,
secure: process.env.NODE_ENV === 'production',
signed: true,
expires: new Date(Date.now() + oneDay)
})
res.cookie('refreshToken', refreshTokenJWT, {
httpOnly: true,
secure: process.env.NODE_ENV === 'production',
signed: true,
expires: new Date(Date.now() + oneWeek)
})
}
Next.js
export const requestLogin = async (body: unknown) => {
try {
const response = await axios.post(apiEndpoint.login(), body, {
withCredentials: true,
});
return response;
} catch (error) {
return error;
}
};
获取SSL证书后问题解决。