问题描述
我正在尝试通过我的客户端将一些图像上传到 cloudinary,它在 localhost 和 chrome 版本 87 上工作正常,但在 chrome v89 中我没有收到“Access-Control-Allow-Origin”标题错误,任何想法为什么会这样?
这是我的服务器路由:
const uploader = require('../config/cloudinary.config')
router.post('/upload',uploader.single("imageUrl"),(req,res) => {
res.setHeader('Access-Control-Allow-Origin','client domain');
if (!req.file) {
res.status(500).json({ code: 500,message: 'Error loading the file' })
return;
}
res.json({ secure_url: req.file.path })
})
这是我的 cors 配置:
const cors = require('cors')
const whitelist = [process.env.DOMAIN]
const corsOptions = {
origin: (origin,cb) => {
const originIsWhitelisted = whitelist.includes(origin)
cb(null,originIsWhitelisted)
},credentials: true
}
解决方法
您可能需要处理 CORS preflight requests,您的浏览器在 POST 请求之前将其显示为 OPTION 请求。
将此行添加到您的代码中。
router.options('/upload',cors())