2012-03-23 8 views
0

リモートサーバーから取得したHTMLヘッダーにスクリプトを挿入するために使用するローカルHTTPプロキシがあります。標準のHTTPストリームで十分にシンプルですが、転送がチャンクエンコードされている場合は、もう少し解析を行う必要があります。チャンクデータに注入するには、どのような方法が良いですか?

私が考えている方法は、やや複雑そうです:

  1. は多分半前(<head>から後方<head>
  2. 解析のための受信データを解析し、チャンクの開始時に進値を見つけます結腸)。
  3. 挿入されたデータのサイズを16進値に追加します。
  4. 注入スクリプトを<head>の後に挿入します。
  5. 変更された文字列をクライアント(ブラウザ)に転送します。

これは機能しますか? (私は調べるためにコードをノックアウトしようとしています) 良い方法がありますか?

答えて

2

完全な<head>タグが単一のチャンク内にあるという保証はないので、これは機能しません。チャンク間の境界に跨る可能性があります。 HTTPチャンク自体を正しい方法で解析し、その中にあるデータをバッファリングして、別々に解析できるようにする必要があります。完全な<head>タグをバッファリングしてから、必要に応じてスクリプトを注入し、バッファリングされたデータとスクリプトを含む新しいチャンクを出力し、それ以降のチャンクをそのまま渡すまで、インバウンドチャンクを読み取ります。

関連する問題