注入分块数据的好方法是什么?

时间:2012-03-23 00:46:26

标签: http sockets networking tcp network-programming

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

我想到的方法似乎有点令人费解:

  1. 解析<head>
  2. 的传入数据
  3. <head>向后解析并在块的开头找到十六进制值(可能在分号前)。
  4. 将注入数据的大小添加到十六进制值。
  5. <head>
  6. 之后插入注入的脚本
  7. 将修改后的字符串转发给客户端(浏览器)。
  8. 这会有用吗? (我即将淘汰代码以找出答案) 还有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

这不起作用,因为无法保证完整的<head>标记将位于单个块中。它可以跨越块之间的边界。您需要以正确的方式解析HTTP块本身,缓冲其中的任何数据,以便您可以单独解析它。读取入站块,直到缓冲完整的<head>标记,然后根据需要注入脚本,输出包含缓冲数据和脚本的新块,然后按原样传递任何后续块。