我正在使用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) )。
答案 0 :(得分:0)
据此:https://expressjs.com/en/resources/middleware/cors.html
var express = require('express')
var cors = require('cors')
var app = express()
app.use(cors())
应该足够