如何将 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 一起使用在不同的端口上?的主要内容,如果未能解决你的问题,请参考以下文章

Node JS在rest api响应中返回图像[关闭]

如何在 MobileFirst Foundation 8 中使用 REST API 从 Node.js 发送推送通知?

如何在 Node Js 上为 Rest API 创建一个干净的架构

Node.js/AngularJS 前端调用 Spring Boot API 后端

如何在 Node.js REST API 中处理非传统查询

Node js App 与 power bi rest Api 的集成