【发布时间】:2021-12-29 00:37:56
【问题描述】:
我的服务器使用 Nodejs,客户端使用 Reactjs。在我的客户端中,我使用 axios 向服务器执行 post/get 请求。 在开发过程中,一切都运行良好,数据被获取并且 cookie 被正确设置。但是,当我将服务器和客户端分别部署到 Heroku 和 Netlify 时,cookie 突然没有设置。
这是我的服务器代码:
dotenv.config()
const server = express();
server.use(cors({origin: "https://frontendname.com", credentials: true}));
server.use(express.json());
server.use(express.urlencoded({extended:true}))
server.use(cookieParser())
server.use("/", fetchData)
server.listen(process.env.PORT, ()=>console.log(`Server listening on PORT ${process.env.PORT}`))
mongoose.connect(process.env.MONGO_URI, {useNewUrlParser: true, useUnifiedTopology: true}).then( () => {
console.log("connected to mongoose")
}).catch((error) => console.log(error.message))
我的服务器 API 代码
res.status(201) .cookie("accessToken", accessToken, {domain:"frontendwebsite.com", httpOnly: true, sameSite: 'strict', path: '/', expires: new Date(new Date().getTime() + 60 * 1000 * 4)}) .cookie("refreshToken", refreshToken, {domain:"frontendwebsite.com", httpOnly: true, sameSite: 'strict', path: '/', expires: new Date(new Date().getTime() + 60 * 1000 * 96)}) .json({message: "login verified", username: req.body.username}) .send()
我的客户端 API 代码:
axios.defaults.withCredentials = true
export const loginAuth = async (credentials) => {
return await axios.post("https://backendname.herokuapp.com/loginAuth", credentials).then((res) => {
return res
})
}
由于“res.cookie”中的域名不正确,我有一种强烈的感觉。因为在我的开发中,当我为服务器和客户端使用 localhost 时,它可以工作。我的客户端托管在 Netlify 上,服务器托管在 Heroku 上。我的客户有一个我从 GoDaddy 获得的自定义域名。我在该域名上使用了 Netlify DNS。有什么想法吗?
【问题讨论】:
标签: node.js reactjs cookies axios dns