5

私は何百もの SO 投稿を読み、利用可能ないくつかの Java HTTP-Proxy Sources を調査しました...しかし、私の問題の解決策を見つけることができませんでした。

Http-Requests をプロキシする WebApp を作成しました。WebApp は機能していますが、プロキシされたページの「ルート」がプロキシサーブレットのパスではなく、サーバーのルートを指しているため、リンクとリファラーが壊れています。

より明確にするために:

  1. 私の ProxyServlet はリクエスト " http://myserver.com/proxy/ProxyServlet?foo=bar "を受け取ります

  2. ProxyServlet は、ServerX からページコンテンツをフェッチするようになりました (例: " http://original.com/test.html ")

  3. ページのコンテンツは、あるストリームから別のストリームへ読み書きし、ヘッダーをコピーするだけでブラウザーに配信されます。

  4. ブラウザには、元のリクエスト (" http://myserver.com/proxy/ProxyServlet?foo=bar ") であるページ (URL) が表示されますが、すべての相対リンクは " http://myserver .com/XXX.html " http://myserver.com/proxy/ProxyServlet/XXX.html "の代わりに

相対リンクが ProxyServlet を正しく指すように「パス」を変更できる応答ヘッダーはありますか?

(ページには JavaScript コードやその他のアクティブ コンテンツなどの比較的アドレス指定された要素が含まれているため、ページ コンテンツの書き換えとリンクの置き換えは非常に困難です...)

(サーブレットのマッピングを「/*」に変更することもできません...このパスを介してアクセスする必要があります...)

4

2 に答える 2

5

あなたは「リバース プロキシ」を発明していて、「URL 書き換え」機能を見逃しています... 私の検索結果の一番上に、これを行うオープン ソース プロキシ サーブレットがあります: http://j2ep.sourceforge.net/docs/ rewrite.html

また、これを行う必要がある場合は、システム アーキテクチャに問題がある可能性があることも知っておく必要があります。Apache、nginex、Varnish などのスタンドアロン プロキシをドロップすることは、スケーリングを開始するときに 1 つ (または複数!) 追加する必要があるため、常にオプションにする必要があります。

于 2012-08-28T22:34:33.290 に答える