我正在使用ember和express over node设计一个网站.它在服务器中运行,例如:SERVER_1.
我在另一台服务器上运行的web服务很少,比如说:SERVER_2.
那是:
SERVER_1中的网站和SERVER_2中提供的Web服务
SERVER_1位于代理服务器后面.我试图从SERVER_1访问webservices:
SERVER_1 =====[PROXY]===> SERVER_2
当我从SERVER_1进行AJAX webservice调用时,我收到:
NetworkError: 500 Internal Server Error
但是,我能够通过浏览器成功检索值.只有通过AJAX代码,我才检索到网络500错误.
另外,为了测试,我删除了我的代理服务器设置:
SERVER_1 =====> SERVER_2
我能够通过AJAX代码和浏览器成功访问所有这些Web服务.
如果我之间有代理服务器:
SERVER_1 =====[PROXY]===> SERVER_2
我收到了 - NetworkError:500内部服务器错误
我想知道从代理服务器后面运行的网站访问第三方Web服务的过程?
附加信息:
已经修复跨域Web服务访问问题(在一个服务器上运行的网站和在不同端口的其他一些服务器上运行的webservices),我使用的是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来处理所有网址的请求.
如何在上面的代码中配置我的代理服务器的IP地址和端口,以便我可以成功访问所有这些Web服务?或者有没有办法在AJAX调用中使用我的代理配置?
有人可以指导我吗?
谢谢