Я разрабатываю веб-сайт, используя ember и экспресс через node. Он работает на сервере, скажем: SERVER_1.
У меня есть несколько веб-сервисов, работающих на другом сервере, скажем: SERVER_2.
То есть:
веб-сайт в SERVER_1 и веб-службы, доступные в SERVER_2
SERVER_1 находится за прокси-сервером. И я пытаюсь получить доступ к веб-сервисам с SERVER_1:
SERVER_1 =====[PROXY]===> SERVER_2
Когда я делаю вызовы веб-службы AJAX с SERVER_1, я получаю:
NetworkError: 500 Internal Server Error
Однако я могу успешно получить значения через браузер. Только через код AJAX я получаю ошибку сети 500.
Также для тестирования я удалил настройку прокси-сервера:
SERVER_1 =====> SERVER_2
и я смог успешно получить доступ ко всем этим веб-сервисам как через код AJAX, так и через браузер.
Если у меня есть прокси-сервер между ними:
SERVER_1 =====[PROXY]===> SERVER_2
Я получаю -- NetworkError: 500 Internal Server Error
Мне хотелось бы узнать, как получить доступ к сторонним веб-сервисам с веб-сайта, работающего за прокси-сервером?
Дополнительная информация:
Уже для решения проблемы междоменного доступа к веб-службе (веб-сайт работает на одном сервере, а веб-службы работают на некоторых других разных серверах с разными портами), я использую 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-адрес и порт моего прокси-сервера в приведенном выше коде, чтобы я мог успешно получить доступ ко всем этим веб-сервисам? Или есть способ настроить мои прокси-серверы в вызове AJAX?
Кто-нибудь может мне помочь?
Спасибо
error
. Просто прослушайте событие ошибки иconsole.log
его, чтобы мы знали, что происходит. - person Paul Mougel   schedule 02.12.2013