node.js - 从在代理后面运行的网站访问 Web 服务

标签 node.js ember.js proxy node-http-proxy webproxy

我正在使用 ember 和 express over node 设计一个网站。它在服务器中运行,例如:SERVER_1。

我在另一台服务器上运行的 web 服务很少,比如:SERVER_2。

即:

SERVER_1 中的网站和 SERVER_2 中可用的网络服务

SERVER_1 位于代理服务器后面。我正在尝试从 SERVER_1 访问网络服务:

SERVER_1 =====[PROXY]===> SERVER_2

当我从 SERVER_1 进行 AJAX 网络服务调用时,我收到:

NetworkError: 500 Internal Server Error

但是,我可以通过浏览器成功检索值。仅通过 AJAX 代码,我正在检索 Network 500 错误

另外为了测试,我删除了我的代理服务器设置:

SERVER_1 =====> SERVER_2

我能够通过 AJAX 代码和浏览器成功访问所有这些 Web 服务。

如果我在它们之间有代理服务器:

SERVER_1 =====[PROXY]===> SERVER_2

我收到了 -- NetworkError: 500 Internal Server Error

我想知道从在代理服务器后面运行的网站访问第三方网络服务的程序?

附加信息:

已经解决了跨域 Web 服务访问问题(网站在一台服务器上运行,Web 服务在其他具有不同端口的不同服务器上运行),我正在使用 http-proxy npm,我的代码是如下:

var express = require('express');
var routes = require('./routes');
var http = require('http');
var path = require('path');
var httpProxy = require('http-proxy');
var endpoint  = {
    host:   'IP_ADDRESS_WHERE_MY_WEBSERVICES_RUN',
    port:   80,
    prefix: '/api'
}

var proxy = new httpProxy.RoutingProxy();
var app = express();

app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.methodOverride());
app.use(express.cookieParser('xxxxx'));
app.use(express.session());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
app.use(function(req, res) {
    if (req.url.indexOf(endpoint.prefix) === 0) {
        proxy.proxyRequest(req, res, endpoint);
    }
});
app.use(express.bodyParser());

if ('development' == app.get('env')) {
    app.use(express.errorHandler());
}
app.get('/', routes.index);

http.createServer(app).listen(app.get('port'), function(){
    console.log('Express server listening on port ' + app.get('port'));
});

我的 AJAX 调用:

$.ajax({
            type: 'GET',
            async: false,
            url: 'API_URL',
            success: function (data) {
                alert('success');
            },
            failure: function(error){
                alert('error');
            }
        });

我已经使用 http-proxy 来处理所有 url 的请求了。

如何在上面的代码中配置我的代理服务器的 IP 地址和端口,以便我可以成功访问所有这些 web 服务?或者有什么方法可以让我的代理配置在 AJAX 调用中?

有人可以指导我吗?

谢谢

最佳答案

通常你需要做这两件事:

npm config set proxy your-proxy-address:port npm 配置设置注册表“http://registry.npmjs.org/

关于node.js - 从在代理后面运行的网站访问 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20323332/

相关文章:

node.js - Liferay主题创建: Error During gulp build and gulp deploy

ember.js - Ember 开关/索引 if 等

javascript - Ember.js - 操作未处理错误

javascript - Ember JS : is it possible to save only modified objects?

asp.net - 如何构建 ASP.NET 代理站点

mysql - 在 AngularJS 中调用 NodeJS 函数

javascript - 如何知道查询中缺少哪些参数?

arrays - Mongoose 更新与对数组的推送操作和对对象的设置操作

php - 如何使用代理运行本地 PHP 简单 HTML DOM 解析器?

Android读取手机代理设置