如何将 REST 与 Node.js 和 AngularJS 一起使用在不同的端口上?
Posted
技术标签:
【中文标题】如何将 REST 与 Node.js 和 AngularJS 一起使用在不同的端口上?【英文标题】:How to use REST with Node.js and AngularJS being on different port? 【发布时间】:2013-03-09 07:00:55 【问题描述】:我正在尝试了解 Angular 和 Node.js 在后端的合作。但是我不知道如何使用 REST 在两者之间进行数据传输。
我有:
-
Node.js 后端在端口
8000
上运行,响应各种 GET 和 POST 请求(通过 cURL)。
Angular 前端通过 Apache 加载,在端口 80
上运行。
javascript 控制台自然会将其识别为not allowed by Access-Control-Allow-Origin
。
这通常是如何解决的?我做错了吗?我不应该通过 Apache 运行前端吗?
【问题讨论】:
【参考方案1】:您也可以使用 cors
npm install cors
const cors = require('cors');
app.use(cors(
origin: 'http://example.com'
));
http://example.com 是您在前端的应用程序源/域。
【讨论】:
【参考方案2】:将此添加到您的 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();
);
【讨论】:
【参考方案3】:解决它的一种方法是使用Cross-origin Resource Sharing。浏览器支持也不错。
【讨论】:
没有更清洁的方法吗?肯定有很多页面使用 Ang + Node,不要告诉我他们是这样做的:-O 您可以通过同一个代理代理两个应用程序,但使用不同的上下文。 得到它与backbonetutorials.com/cross-domain-sessions一起工作感谢您指出,怎么做!以上是关于如何将 REST 与 Node.js 和 AngularJS 一起使用在不同的端口上?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MobileFirst Foundation 8 中使用 REST API 从 Node.js 发送推送通知?
如何在 Node Js 上为 Rest API 创建一个干净的架构