所以我正在制作一个电子商务 React 应用程序,我将其部署在 vercel 上进行测试并在我的简历中展示它。但是,我无法让受保护的路线正常工作。我的公共路线正在工作并顺利获取项目,但我对 /api/auth/login 的发布请求被 cors 阻止
/login:1 从源“https://react-js-e-commerce”访问“https://react-js-e-commerce-store-server.vercel.app/api/auth/login”处的 XMLHttpRequest -store-client.vercel.app' 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。
const loginUser = async (req, res) => {
try {
const { email, password } = req.body;
console.log(email,password)
const user = await User.findOne({ email });
if (!user || !(await bcrypt.compare(password, user.password))) {
return res.status(401).send('Invalid email or password!');
}
const userInfo = {userID: user.userID, role: user.role}
const token = generateJWT(userInfo);
const refreshToken = generateRefreshToken(userInfo);
user.refreshToken = refreshToken;
await user.save();
res.cookie('refreshToken', refreshToken, {
maxAge: 1000 * 60 * 60 * 24 * 3, // expires in 3 days
secure: true, // Ensures the cookie is sent over HTTPS only
httpOnly: false, // Prevents client-side JS from accessing the cookie
sameSite: 'none' // Allows cross-site cookie sharing
});
return res.status(201).send({message:"Loggedin Successfuly", user:userInfo, token:token});
} catch (error) {
console.log(error)
return res.status(500).send('Error logging in user!');
}
};
更改了 res.cookie 的属性,但这仍然不起作用。
{
"src": "/api/(.*)",
"headers":{
"Access-Control-Allow-Origin": "https://react-js-e-commerce-store-client.vercel.app",
"Access-Control-Allow-Credentials": "true"
},
"dest": "/auth.routes.js"
},
将这些标题行添加到 vercel.json,错误更改为 no HTTP ok 状态。 ??
登录:1 从源“https://react-js-e-commerce-”访问“https://react-js-e-commerce-store-server.vercel.app/api/auth/login”处的 XMLHttpRequest store-client.vercel.app' 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:它没有 HTTP 正常状态。
已修复: 问题是由于 vercel 造成的。在 aws-eleasticbeanstalk 上托管服务器,一切顺利。