3

ローカルマシンから、IPによってロックダウンされているリモートベンダーのWebサイトにアクセスしようとしています(企業サーバーへのアクセスが許可されています)。問題なくAPIにアクセスできるサーバーからトンネリングすることでこれを行っていますが、SSHトンネルを設定してベンダーのWebサイトのURLにアクセスすると、404NotFoundエラーが発生します。これが私が使っているものです:

ssh -f -N user@example.com -L 7777:vendorhostexample.com:80

すべてがトンネルが正しく設定されていることを示していますが、「http:// localhost:7777 / foobar」などのURLを試してみると、404エラーが発生します。何か案は?

4

4 に答える 4

3

問題は、httpヘッダー「Location:localhost」を送信していることです。これは、宛先Webサーバーが仮想ホストを使用している場合、Webサイト「vendorhostexample.com」ではなくWebサイト「localhost」を検索しようとすることを意味します。

1つの方法は、Ryanがhostsファイルを変更し、vendorhostexample.comが127.0.0.1にあることをマシンに伝えることです。そうすれば、ブラウザに入力すると、正しい「Host:」httpヘッダーでトンネルを通過します。セットする。

もう1つの方法は、ブラウザの拡張機能をインストールして、Firefox用のこのようなHostヘッダーを変更することです。

于 2012-10-12T16:34:11.553 に答える
2

他の誰もが、ドメイン名が間違った仮想ホストと一致するという問題についてすでに言及しています。別の解決策は、動的トンネルを使用することです。

フラグを使用して接続を開くと-D 8080、SSHは動的トンネルを開き、ポート8080でSOCKSプロキシを公開します。次に、localhost:8080でSOCKSプロキシを使用するようにブラウザ(または選択したアプリケーション)を設定すると、すべてのトラフィックをサーバーにトンネリングできます。

于 2012-10-14T12:06:06.080 に答える
1

ローカルhosts(/ etc / hosts for linux)ファイルを編集して、次のような行を追加できます。

127.0.0.1 vendorhostexample.com

そしてさらに試みる。

于 2012-10-12T08:57:27.667 に答える
-1

あなたはこれでHTTPを破っています。ブラウザはlocalhostHTTPヘッダーでホスト名を送信しています。これlocalhostは、ベンダーのサイトのWebサイトを要求していることを意味します。彼らはほぼ確実localhostに彼らのサーバー上にサイトを置いていないので、あなたは404を手に入れます。

現在のようにHTTPをトンネリングすることはできません。会社のサーバーに適切なHTTPプロキシを設定する必要があります。

于 2012-10-11T17:54:47.603 に答える