从角度2调用Express.js上的Rest API时出错

时间:2017-10-09 13:28:22

标签: node.js angular express

从angular组件调用http get时出现以下错误:

"无法加载http://localhost:3005/json:否' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://localhost:3000'因此不允许访问。"。

2 个答案:

答案 0 :(得分:0)

您需要设置标头以允许从(快速) Node.js 的路由器中的 localhost 进行访问。 下面的代码我使用*来节点服务器来访问所有来源的请求。

router.use(function(req,res,next){
    res.header('Access-Control-Allow-Origin', req.get('Origin') || '*');
    res.header('Access-Control-Allow-Credentials', 'true');
    res.header('Access-Control-Allow-Methods', 'GET,HEAD,PUT,PATCH,POST,DELETE');
    res.header('Access-Control-Expose-Headers', 'Content-Length');
    res.header('Access-Control-Allow-Headers', 'Accept, Authorization, Content-Type, X-Requested-With, Range');
    next();
});

答案 1 :(得分:0)

更容易解决的问题是使用快速中间件cors

这将(有点)为您添加上述设置,以便您可以忘记这些。 非常重要的是,您只能在开发模式下启用此功能,因为这可能会导致严重的安全问题。 考虑做类似的事情:

const server = require('express')();
const cors = require('cors');
if (isDevelopmentMode) {
    server.use(cors());
}