2012-03-23 138 views
0

我有一个本地HTTP代理,用于将脚本注入从远程服务器检索的HTML标头中。使用标准的HTTP流很简单,但是当传输是分块编码时,需要进行更多的分析。什么是注入分块数据的好方法?

我心目中的方法似乎有点令人费解:

  1. <head>解析传入的数据<head>
  2. 解析向后和块(开始发现的十六进制值之前,也许半结肠)。
  3. 将注入数据的大小添加到十六进制值。
  4. <head>之后插入注入的脚本。
  5. 将修改后的字符串转发给客户端(浏览器)。

这项工作? (我即将敲出代码找出) 有没有更好的方法?

回答

2

这是行不通的,因为不能保证完整的<head>标签将在一个块内。它可以跨越块之间的边界。您需要以正确的方式解析HTTP块,缓存其中的任何数据,以便您可以分别解析它们。读取入站块,直到完成<head>标记的缓冲,然后根据需要插入脚本,输出包含缓冲数据和脚本的新块,然后按原样传递任何后续块。