代码之家  ›  专栏  ›  技术社区  ›  Shadow

从通过webRequest FilterResponseData StreamFilter传递的TypedArray缓存数据解码字符串

  •  0
  • Shadow  · 技术社区  · 8 年前

    我使用Mozilla的webrequeststreamfilter来读取http请求

    https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/filterResponseData

    https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/ondata

    只要请求没有缓存在浏览器中,类型化数组中的解码文本就会被正确解码,但是当数据来自缓存时,问题就出现了。当发生这种情况时,这将成为先前成功解码的相同数据的输出:

    TextDecoder 为此,设置了UTF-8编码选项。

    应用的一个快速“解决方案”是只从typedarray中删除零或从字符串中删除空值,而不知道它可能如何影响原始数据,结果如下:

    以及相应的unicode版本

    \u000e20180901034956%\u0005\u0001\u0014\u0002\u0001\u0002\u0005\u0003\u0001~\u0013var

    我试着通过Firefox的频道寻求帮助,但似乎连续三天都没有人回答,所以我把这个问题贴在这里。

    我怎样才能正确地解码缓存数据,还有谁能解释为什么它会这样显示?所有其他未缓存的数据都被正确解码。

    编辑:在进一步挖掘之后,我确认数据是从Firefox缓存文件中读取的。我找到了正确的文件,其中包含以下信息示例(这是在记事本中打开的):

    20180901034956%增值税

    “v a r”后面的文本遵循每个字符的相同格式,后面是一个“空格”,如果这是一个空格的话。所以确认这是从缓存文件传递的数据,那么如何正确解码呢?我认为删除空格不是一个合适的解决方案,因为它还可以删除作为原始数据信息一部分的空格。

    变量

    后面什么都没有,每个字符之间也没有空格。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Shadow    6 年前

    看起来这确实是一个Firefox错误,我已经使用的解决方法是我们自己“修复”这个问题的唯一方法,直到Firefox决定自己纠正这个问题。

    https://bugzilla.mozilla.org/show_bug.cgi?id=1530408#c6

        2
  •  -1
  •   user3852953    6 年前

    看起来这个bug会在firefox76中修复。

    推荐文章