9

ember と Express over node を使用して Web サイトを設計しています。たとえば、サーバーで実行されています:SERVER_1。

SERVER_2など、別のサーバーで実行されているWebサービスはほとんどありません。

あれは:

SERVER_1 の Web サイトと SERVER_2 で利用可能な Web サービス

SERVER_1 はプロキシ サーバーの背後にあります。そして、SERVER_1 から Web サービスにアクセスしようとしています。

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

SERVER_1 から AJAX Web サービス呼び出しを行うと、次のメッセージが表示されます。

NetworkError: 500 Internal Server Error

ただし、ブラウザから値を正常に取得できます。AJAX コードを介してのみ、Network 500 errorを取得しています。

また、テストのために、プロキシ サーバーのセットアップを削除しました。

SERVER_1 =====> SERVER_2

そして、AJAX コードとブラウザーの両方を介して、これらすべての Web サービスに正常にアクセスできました。

それらの間にプロキシサーバーがある場合:

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

私は取得しています -- NetworkError: 500 Internal Server Error

プロキシ サーバーの背後で実行されている Web サイトからサードパーティの Web サービスにアクセスする手順を知りたいですか?

追加情報:

クロスドメイン Web サービス アクセスの問題 (あるサーバーで実行されている 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 のリクエストを処理しています。

これらすべての Web サービスに正常にアクセスできるように、上記のコードでプロキシ サーバーの IP アドレスとポートを構成するにはどうすればよいですか? または、AJAX 呼び出しでプロキシ構成を行う方法はありますか?

誰でも私を案内してもらえますか?

ありがとうございました

4

4 に答える 4

2

孫子がこのスレッドにいた場合、そもそも正しい戦略はこの位置にないだろうと彼は言うでしょう。通常、すべての企業ネットワークでポート 443 が開いているため、https トラフィックを許可するには、(誰かの) クラウド サービスを使用してサーバーを作成し、ポート 443 で SSH 接続することを検討してください。この手法を使用して、開発目的で独自のプロキシを作成することもできます。 (squidd を参照) - そうすれば、少なくともプロキシ ログを確認できます。

一度に 2 つの問題を解決しようとしています。1 つはネットワークの問題で、もう 1 つは作成中のコードです。これを行うと、一度に 1 つだけ解決すればよく、どちらも進行を妨げません。

于 2014-01-26T12:12:09.797 に答える