在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
错误说 CORS 仅支持特定协议,例如 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需要创建代理服务器来将调用转移到后端服务。
我的前端代码是 运行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
错误说 CORS 仅支持特定协议,例如 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需要创建代理服务器来将调用转移到后端服务。