我正在尝试udnerstand和Node.js的合作。但是我无法弄清楚,如何使用REST进行数据传输。我在端口8000上运行Node.js后端,响应各种GET和POST。我的Angular前端通过运行在端口80上的Apache加载。自然,JavaScript控制台将其标识为not allowed by Access-Control-Allow-Origin
。如何使用REST与Node.js和AngularJS在不同的端口上?
这通常如何解决?我做错了吗?我不应该通过Apache运行前端?
我正在尝试udnerstand和Node.js的合作。但是我无法弄清楚,如何使用REST进行数据传输。我在端口8000上运行Node.js后端,响应各种GET和POST。我的Angular前端通过运行在端口80上的Apache加载。自然,JavaScript控制台将其标识为not allowed by Access-Control-Allow-Origin
。如何使用REST与Node.js和AngularJS在不同的端口上?
这通常如何解决?我做错了吗?我不应该通过Apache运行前端?
解决它的一种方法是使用Cross-origin Resource Sharing。浏览器支持也不错。
添加到您的Node.js API服务器
server.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Methods', 'OPTIONS,GET,POST,PUT,DELETE');
res.header("Access-Control-Allow-Headers", "Content-Type, Authorization, X-Requested-With");
if ('OPTIONS' == req.method) {
return res.send(200);
}
next();
});
没有任何清洁的方式该怎么办呢?使用Ang + Node必须有大量的页面,不要告诉我他们这样做:-O – Michal 2013-03-20 09:12:28
您可以通过相同的代理来代理这两个应用程序,而不是使用不同的上下文。 – NilsH 2013-03-20 09:13:53
得到它与http://backbonetutorials.com/cross-domain-sessions/工作感谢指出,如何做到这一点! – Michal 2013-03-20 13:53:42