【发布时间】:2021-10-13 22:45:16
【问题描述】:
我在后端使用 express,在前端使用 react。我正在使用 cors 从 passport.js GoogleOAuth 中获取用户详细信息。我正在使用 Heroku 在两个不同的域中托管前端和后端。客户端中的请求如下所示:
fetchAuthUser = async () => {
const metadata = {
headers : {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
referrerPolicy: "strict-origin-when-cross-origin",
body: null,
method: "GET",
mode: "cors",
credentials: "include"
}
const response = await fetch(Env.backend_host +'/authenticate_google/api/current_user', metadata).catch((err) => {
console.log(err)
});
console.log(response);
if (response && response.data) {
this.setState({user: eval(response.data)}, () => {this.loadPages()});
}
}
并且服务器当前设置如下:
cookies是这样设置的,
router.use(
cookieSession({
maxAge: 30 * 24 * 60 * 60 * 1000, // sets cookie to expire in 30 days (converted to milliseconds)
keys: ["trialkey"],
sameSite: "lax",
})
);
get 响应如下
router.get("/api/current_user", cors({ origin: "https://energycast-front.herokuapp.com", methods: ['GET','POST','OPTIONS'], credentials: true, preflightContinue: true}), (req, res) => {
console.log("User:" +req.user)
res.json(req.user);
});
问题似乎与 cors 无关,但是在观察请求时,我看到没有发送任何 cookie。这很奇怪,因为我设置了凭据“包含”。
注意,控制台正在记录服务器本身未定义的“用户”。
任何帮助将不胜感激。
【问题讨论】:
标签: javascript reactjs express cookies cross-domain