【发布时间】:2021-07-30 04:48:51
【问题描述】:
我正在尝试从我的 node.js api (localhost:3001) 设置一个 httpOnly cookie 以与我的 react 客户端应用程序 (localhost:3000) 一起使用,到目前为止我所做的一切都导致没有设置任何 cookie我的浏览器。关于我的设置的一些关键因素:
后端是node,运行fastify,fastify-cookie & cors
// CORS
server.use(
require('cors')({
origin: ['https://localhost:3000'],
optionsSuccessStatus: 200,
credentials: true
})
)
// Cookies
server.register(require('fastify-cookie'), {
secret: process.env.JWT_SECRET
})
// Sending the cookie
reply
.setCookie('token', token, {
domain: 'localhost',
path: '/',
secure: true,
sameSite: 'lax',
httpOnly: true
})
.send({ user })
客户端在chrome中运行https localhost,使用fetch进行api调用。
const fetchUsers = async () => {
const req = await fetch(`${process.env.USERS_API_BASE}/users`, { credentials: 'include' })
const res = await req.json()
console.log(res)
}
结果
在我的 chrome 应用程序检查器中没有设置任何 cookie,但它从服务器发送到浏览器并且看起来正确。
set-cookie: token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjEsImVtYWlsIjoiaGVsbG9Ac2hhbi5kaWdpdGFsIiwiaWF0IjoxNjIwNDI1ODI0LCJleHAiOjE2MjA0Mjk0MjR9.S8eOQMtSBY85wlenuxjIGYNuk3Ec5cKQ87pAhmCvQ9w.nfRxGzq3IMFimC%2FSJeUH9Xl7bH%2FyXVprwK1NBYfur4k; Domain=localhost; Path=/; HttpOnly; Secure; SameSite=Lax
服务器上的request.cookies 总是返回一个空白对象{}。有什么建议吗?
【问题讨论】: