2017-10-09 112 views
0

上Express.js调用REST API,我收到以下错误,同时从角组件调用HTTP GET:错误从角2

“无法加载http://localhost:3005/json:没有‘访问控制允许来源’头存在于请求的资源中,因此'http://localhost:3000'不允许访问。“

+1

的可能的复制[否“访问控制允许来源”角4应用程序(https://stackoverflow.com/questions/44448177/no-access-control-allow -origin-angular-4-app) – FussinHussin

+0

你需要设置你的头文件,或者使用谷歌浏览器扩展 – FussinHussin

+1

可能的[如何允许CORS?]的重复(https://stackoverflow.com/questions/7067966/how-to -ALLOW-CORS) –

回答

0

您需要设置标题,允许(快递)Node.js的的路由器从本地主机访问。 下面的代码,我使用*到节点服务器来访问所有来源的请求。

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(); 
}); 
0

更容易解决的方法是使用快递中间件cors

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

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