在Heroku部署后,出现错误"No 'Access-Control-Allow-Origin' header is present on the requested resource"。

17 浏览
0 Comments

在Heroku部署后,出现错误"No 'Access-Control-Allow-Origin' header is present on the requested resource"。

在本地主机上启动服务器时,没有出现任何错误。但是在部署到Heroku后,在某些特定路由上出现以下CORS错误:

请求的资源上不存在'Access-Control-Allow-Origin'头。因此,不允许访问来源'http://127.0.0.1:8080'。响应具有HTTP状态代码503。如果不透明响应符合您的需求,请将请求的模式设置为'no-cors'以禁用CORS获取资源。

我尝试了几乎所有方法来解决这个错误,我也尝试了在stackoverflow上找到的所有可能的解决方案,但都没有效果。

我的代码很简单:有一个登录函数,该函数发送请求到一个API端点,该端点确保管理员是否已验证。

我的服务器代码:(使用express js)

const expressApp = require('express');
const port = process.env.PORT || 3000;
const cors = require('cors');
const express = expressApp();
const bodyParser = require('body-parser');
const session = require('express-session');
const adminRoutes = require('./admin/admin-routes');
const userRoutes = require('./users/user-routes');
const bookingRoutes = require('./booking/booking-routes');
const contactRoutes = require('./contact-us/contact-routes');
require('./dbConnection.js');
express.use(function (req, res, next) {
    console.log(req.headers);
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    res.header("Access-Control-Allow-Methods", "POST,DELETE,PUT,GET,OPTIONS");
    res.header("Access-Control-Allow-Headers", req.headers['access-control-request-headers']);
    res.header("Access-Control-Request-Method", req.headers['access-control-request-method']);
    next();
});

客户端代码:

fetch(url, {  
        method: "POST",
        password: this.password,
        body: JSON.stringify({
            bodyData: { email }
        }),
        headers: {
            'Access-Control-Allow-Origin': '*',
            "Content-Type": "application/json"
        }
    }).then(res => {
        return res.json()
    }).then(user => {
         // 这里有一些代码
    }).catch(error => {
        console.log(error);
    })

0