电子角节点js环境中的CORS

时间:2019-03-14 19:07:39

标签: node.js angular cors electron

我正在使用Electron,Angular和后端(API)node.js(快速服务器)开发桌面应用程序。

node.js express服务器正在http://localhost:3000上运行,并且 电子内部包裹的角在http://localhost:4200

处运行

当我从前端调用api端点/ api / companies(httpget)时,我可以调用端点并通过console.log在服务器(nodemon server.js)的终端窗口中查看结果

但是结果没有从服务器返回到前端,并且发生错误(无法加载http://localhost:3000/api/companies:请求的资源上没有'Access-Control-Allow-Origin'标头。起源'{ {3}}'因此不允许访问。)在浏览器中抛出。

到目前为止,我已经尝试了以下代码(有注释和无注释),但都无法正常工作:

    // var originsWhitelist = [
    //     'http://localhost:4200'
    // ];
    // var corsOptions = {
    //     origin: function (origin, callback) {
    //         var isWhitelisted = originsWhitelist.indexOf(origin) !== -1;
    //         callback(null, isWhitelisted);
    //     },
    //     credentials: true
    // }

    // app.use(cors());

    app.use(function(req, res, next) {
        res.header("Access-Control-Allow-Origin", "*");
        res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        next();
    });

现在我的问题是1.为什么首先出现cors问题时为什么能够调用服务器端点;以及2.为什么在尝试将响应发送回客户端时仅cors问题表面(res.json(data) )。

1 个答案:

答案 0 :(得分:0)

据此:https://expressjs.com/en/resources/middleware/cors.html

var express = require('express')
var cors = require('cors')
var app = express()

app.use(cors())

应该足够