某些 chrome 版本中没有“Access-Control-Allow-Origin”标头

问题描述

我正在尝试通过我的客户端将一些图像上传到 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())

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...