Node.js 在本地主机上运行两台服务器时接收CORS错误

Node.js 在本地主机上运行两台服务器时接收CORS错误,node.js,reactjs,cors,axios,Node.js,Reactjs,Cors,Axios,我正在尝试使用axios测试从reactjs到节点rest层的api调用。当我查看来自Chrome的控制台消息时,我收到以下CORS错误。我看到以下错误“从源站“”访问“”处的XMLHttpRequest已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许源站”标头。”。奇怪的是,catch块中的代码被两个方法调用(LoginApi中的一个用于测试目的),但是catch参数中的error变量在我将鼠标移到它上面时一直给出一条消息说“error is not

我正在尝试使用axios测试从reactjs到节点rest层的api调用。当我查看来自Chrome的控制台消息时,我收到以下CORS错误。我看到以下错误“从源站“”访问“”处的XMLHttpRequest已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许源站”标头。”。奇怪的是,catch块中的代码被两个方法调用(LoginApi中的一个用于测试目的),但是catch参数中的error变量在我将鼠标移到它上面时一直给出一条消息说“error is not defined”。1) 如果我因为发生错误而处于catch块中,那么错误怎么可能是未定义的?2) 如果我是从本地主机运行,我如何得到CORS错误,以及如何解决测试问题

以下是我的saga文件中的方法:

function* login(params){
    try {
        const api = new LoginApi();
        const response = yield call(api.login, params);
    } catch (error) {
        debugger;
        yield put({ type: types.ERROR_OCCURRED, error });
    }
}
下面是LoginApi对象中从yield调用中调用的方法:

login = async (loginProps) => {
    try {
        let api = axios.create({
            baseURL: 'http://localhost/5001',
            timeout: 100000
        });

        return await api.post(`/api/login`, loginProps);
    } catch (error) {
        debugger;
        throw error;
    }
}

接收请求的服务器必须设置CORS标头,以便让浏览器知道服务器正在其域外等待请求。您始终可以手动设置它们,但如果您使用express,则有一个库可以轻松地进行设置-。大多数流行的节点框架应该有一个等效的

接收请求的服务器必须设置CORS头,以便让浏览器知道服务器正在其域外等待请求。您始终可以手动设置它们,但如果您使用express,则有一个库可以轻松地进行设置-。大多数流行的节点框架应该有一个等效的

您可以自己设置请求头(跨源),也可以使用CORS包(
npm i CORS--save

不使用cors软件包->

app.use((req, res, next) => {
    res.header('Access-Control-Allow-Origin', '*');
    if (req.method === 'OPTIONS') {
        var headers = {};
    // headers["Access-Control-Allow-Origin"] = req.headers.origin;
        headers["Access-Control-Allow-Origin"] = "*";
        headers["Access-Control-Allow-Methods"] = "POST, GET, PUT, DELETE, 
        OPTIONS";
        headers["Access-Control-Allow-Credentials"] = false;
        headers["Access-Control-Max-Age"] = '86400'; // 24 hours
        res.writeHead(200, headers);
       res.end();
    } else {
        next();
    }
});
如果您正在使用cors(npm i cors--保存)

const cors=require('cors'))
应用程序使用(cors())


有关cors
包配置的更多信息,请参阅

您可以自己设置请求头(跨源),也可以使用cors包(
npm i cors--save

不使用cors软件包->

app.use((req, res, next) => {
    res.header('Access-Control-Allow-Origin', '*');
    if (req.method === 'OPTIONS') {
        var headers = {};
    // headers["Access-Control-Allow-Origin"] = req.headers.origin;
        headers["Access-Control-Allow-Origin"] = "*";
        headers["Access-Control-Allow-Methods"] = "POST, GET, PUT, DELETE, 
        OPTIONS";
        headers["Access-Control-Allow-Credentials"] = false;
        headers["Access-Control-Max-Age"] = '86400'; // 24 hours
        res.writeHead(200, headers);
       res.end();
    } else {
        next();
    }
});
如果您正在使用cors(npm i cors--保存)

const cors=require('cors'))
应用程序使用(cors())


有关更多的
cors
包配置,只需参考为什么会捕获异常和错误对象,捕获条件的参数未定义?为什么会捕获异常和错误对象,捕获条件的参数未定义?