在node js中写一个反向代理调用django中的api

write a reverse proxy in node js to call the api in django

我的前端代码是 运行ning in angular 在节点 httpserver 端口 127.0.0.1:8081 我的后端服务 运行nning 在端口 127.0.0.1:9000 的 python django 框架中 从 angular http 方法调用我的后端服务时抛出 cors 异常 所以我在我的节点 js

中写了一个代理控制器
var http = require('http'),
httpProxy = require('http-proxy');

var proxy = httpProxy.createProxyServer();

http.createServer(function (req, res) {
    // This simulates an operation that takes 500ms to execute
    setTimeout(function () {
        proxy.web(req, res, {
            target: 'http://127.0.0.1:9000/dummy/'
        });
    }, 500);
}).listen(8080, "127.0.0.1");

在 angular 收听和绑定。 i 运行 作为节点 proxycontroller.js,结果是另一个端口号 127.0.0.1:8080

从代理控制器它调用我的后端服务和结果 json 但是从 angular js 从 http.get() 方法调用代理控制器结果 cors 问题

请帮忙解决这个问题

在 Django 中启用 CORS

使用这个第三方库 django-cors 来完成。

您获得 CORS 是因为您正在从 AngularJS 应用程序进行调用并且它的主机是 127.0.0.1:8081,不同于您的 Django 应用程序主机 127.0.0.1:9000

错误说 CO​​RS 仅支持特定协议,例如 http:// 等。因此您必须向该协议添加 http url。当您说 127.0.0.1 时,浏览器无法理解使用哪种协议来访问 url,应该使用 http:// 还是 data:// 或 chrome:// 等. 所以你必须明确地说 http://

你必须在后端配置cors。后端(API 服务器)明确表示允许使用我之前指定的 http header 的站点。否则,我可以打开您的网站,使用 chrome 控制台编辑前端并删除所有安全内容。它在后端。

作为http://127.0.0.1:9000来自前端angular应用程序,dosent需要创建代理服务器来将调用转移到后端服务。