什么是注入分块数据的好方法?
问题描述:
我有一个本地HTTP代理,用于将脚本注入从远程服务器检索的HTML标头中。使用标准的HTTP流很简单,但是当传输是分块编码时,需要进行更多的分析。什么是注入分块数据的好方法?
我心目中的方法似乎有点令人费解:
- 从
<head>
解析传入的数据<head>
- 解析向后和块(开始发现的十六进制值之前,也许半结肠)。
- 将注入数据的大小添加到十六进制值。
- 在
<head>
之后插入注入的脚本。 - 将修改后的字符串转发给客户端(浏览器)。
这项工作? (我即将敲出代码找出) 有没有更好的方法?
答
这是行不通的,因为不能保证完整的<head>
标签将在一个块内。它可以跨越块之间的边界。您需要以正确的方式解析HTTP块,缓存其中的任何数据,以便您可以分别解析它们。读取入站块,直到完成<head>
标记的缓冲,然后根据需要插入脚本,输出包含缓冲数据和脚本的新块,然后按原样传递任何后续块。