即使在设置时也出现访问控制允许来源问题

Posted

技术标签:

【中文标题】即使在设置时也出现访问控制允许来源问题【英文标题】:Access-Control-Allow-Origin issues even on setting it up 【发布时间】:2018-02-01 18:07:20 【问题描述】:

我的 nodejs/express 包括:

app.use(function handleAppError(err, req, res, next) 
    const msg = 'ERROR: App error: ' + util.inspect(err);
     // Website you wish to allow to connect
    res.setHeader('Access-Control-Allow-Origin', '*');

    console.log(msg);
    if (res.headersSent) 
        next(err);
     else 
        res.status(500).send(msg);
    
);

...但是在拨打电话时,我仍然在 Chrome 中遇到错误:

XMLHttpRequest 无法加载 http://:8080/management-api/v1/bots。 对预检请求的响应未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:8100” 访问。

【问题讨论】:

【参考方案1】:

您需要处理 OPTIONS 方法。 试试这个

app.all("/*", function(req, res, next) 
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With");
    res.header("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE");
    if (req.method === "OPTIONS")
        res.send(200);
    else
        next();
);

【讨论】:

以上是关于即使在设置时也出现访问控制允许来源问题的主要内容,如果未能解决你的问题,请参考以下文章

如何设置“访问控制允许来源:*”?

Firebase 存储和访问控制允许来源

Android 4.1 的访问控制允许来源错误

Laravel 生产,CORS 没有“访问控制允许来源”标题

jQuery - 没有访问控制允许来源

Safari 中的访问控制允许来源