要するに、私はnode.jsでプロキシサーバーを書いています(それはまだ便利ですが、プロキシを持っているだけで、私は長い間火傷しました、これはまだ生きているのだろうか)
.pipe()のようなメソッドに基づくプロキシは私には向いていません-完全なデータを自分自身に渡す必要があるので、それらは通り抜けます。 データを完全にダウンロードし、処理してから送信する必要があります。
私は例に基づいてソケットにプロキシを作成しました-それは写真を打ちます(コンテンツの長さとは異なる長さのデータがダウンロードされ、さらに小さな写真の場合は差が小さく、大きな写真の場合はダウンロードされます)
私はhttpモジュールでそれを書き直しました-それはまだ打ち負かされています、問題の可視性は同じです。
長い間、***、そのような問題についてはどこにもありません...
理由は、ソケットとhttpを使用するすべての入出力にはエンコードがあり、それを指定しなくても(オプションのパラメーター)、
内部に何らかのデフォルトのエンコードがあり、デフォルトで何かを行うからです!つまり、このエンコーディングを使用したすべての画像は何らかの形で処理され、損なわれます。 そして、これは別の質問です、一体何がエンコーディングなのでしょうか? 次に、2つ-エンコードの前後にあるはずです。
node.jsのエンコードに関する問題を解決する方法
エンコーディング「バイナリ」を配置します-ダウンロードする場合、データを受信する前に次のように記述する必要があります
var req = http.request(options, function (res) { res.setEncoding('binary');
そして、写真を送信するとき、次の形式の2番目のパラメーターを追加する必要があります
response.write(data,'binary');
そして、それはデータへの上昇を止め、htmlエンコードもビートします。私はすぐに気づかなかったので、最初は写真で見ました。
また、あらゆる種類のstackoverflow.comやドキュメントからのアドバイスに基づいたものはありません。このエンコーディングの動作はデフォルトで有効になっており、すべてのデータを台無しにします。
それはどうですか? わかりました、エンコードは気にしませんが、写真はどうですか? 彼らは壊れたデータを受け取って送信するような穏やかなコード例を提供しています...
私はプロのプログラマーではなく、自転車を発明しています。 確かにあなたは(上記の条件を満たしている)たくさんのオープンソースプロキシを見つけるでしょう、あなたはただそれを
調べなければ
なりませんでした...