启用跨域但错误仍然存​​在

Posted

技术标签:

【中文标题】启用跨域但错误仍然存​​在【英文标题】:Enabled Cross Origin but error still persists 【发布时间】:2020-01-24 11:46:50 【问题描述】:

我在使用 express 作为中间件的 nodejs 服务器中启用了 CORS,但我仍然得到 ​​p>

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource

我已尝试启用此处建议的 cors 和解决方案 Using CORS Still Give Cross Origin Error

但它仍然对我不起作用。

app.use(cors())
app.options('*',cors())
app.use((req, res, next) => 
    res.header('Access-Control-Allow-Origin', '*');

    // authorized headers for preflight requests
    // https://developer.mozilla.org/en-US/docs/Glossary/preflight_request
    res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
    next();

    app.options('*', (req, res) => 
        // allowed XHR methods  
        res.header('Access-Control-Allow-Methods', 'GET, PATCH, PUT, POST, DELETE, OPTIONS');
        res.send();
    );
);

这就是我在前端nextjs 应用程序中创建请求的方式。

 const requestBody=
            bnb: address
        


        let config = 
            headers: 
            'Content-Type': 'application/x-www-form-urlencoded'
            
        


        axios.post(methods.verify_bnb, qs.stringify(requestBody), config)
        //

我应该能够发出请求和服务器来处理它,因为我启用了 cors,但它仍然抛出提到的错误。

【问题讨论】:

为确保此处配置了 cors,请查看此处:expressjs.com/en/resources/middleware/cors.html。您是否收到 503 错误代码?我曾经看到它是如何在 chrome 浏览器中被解释为 cors 错误的——在我的示例中,当服务器在处理请求时遇到数据库调用问题时,我得到了这个。 我确实按照此应用程序提供的链接中的说明进行操作,但仍然没有用。不,我也没有收到 503 错误。它不会在本地环境中产生错误。 你试过这样使用cors吗? const cors = require('cors') app.use(cors()) ,我认为您现在正在设置 cors 然后覆盖这些设置。或者如果想允许它用于特定路线,请查看此处***.com/questions/11181546/… 是的,我正在使用这个配置。我已经删除了其他的,但错误仍然存​​在。值得一提的是,我已经在谷歌计算引擎上部署了服务器。我可以通过 http 与邮递员进行交互,但在应用程序上它给出了阻止混合内容的错误,所以我已将其转换为 https,它不适用于邮递员,但应用程序不会创建该错误但 cors 错误 你检查了谷歌计算引擎日志吗? 【参考方案1】:

我将前端部署在 zeit 上,并将服务器部署在计算引擎上。这给了我这个错误,只要我在同一个计算引擎上部署前端,它就可以正常工作。我不确定这是否是正确的实现,但不再产生 CORS 错误

【讨论】:

以上是关于启用跨域但错误仍然存​​在的主要内容,如果未能解决你的问题,请参考以下文章

为啥启用 CORS 后仍然出现 CORS 错误

在带有 Angular 的 Spring Boot 中启用了 Cors,但仍然出现 cors 错误

在 php 文件上启用了 Cors,但仍然出现错误

无法在 ASP.NET Core 1.0 中启用跨域请求 (CORS)

Express 启用 COR 标头仍然会导致错误

使用 .NET Core 和 Angular 客户端启用 CORS 错误后,它仍然会发生