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

Posted

技术标签:

【中文标题】某些 chrome 版本中没有“Access-Control-Allow-Origin”标头【英文标题】:No 'Access-Control-Allow-Origin' header in some chrome version 【发布时间】:2021-07-13 14:34:35 【问题描述】:

我正在尝试通过我的客户端将一些图像上传到 cloudinary,它在 localhost 和 chrome 版本 87 上运行良好,但在 chrome v89 中我得到 No '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

【问题讨论】:

【参考方案1】:

您可能需要处理CORS preflight requests,您的浏览器在 POST 请求之前将其显示为 OPTION 请求。

将此行添加到您的代码中。

router.options('/upload', cors())

【讨论】:

以上是关于某些 chrome 版本中没有“Access-Control-Allow-Origin”标头的主要内容,如果未能解决你的问题,请参考以下文章

如何在Chrome中启用ActiveX?

XP系统下Chrome浏览器打开某些网站闪退的解决办法

Chrome字体始终待定

专属| SQLite漏洞影响Chrome

无法在 Chrome v76 中隐藏“Chrome 正在由自动化软件控制”信息栏

PhoneGap/Cordova 以及最新版本的 Google Chrome 中没有“Access-Control-Allow-Origin”