XHR(XMLHttpRequest)发送POST文本数据的情况还算常见,直接调用“xhr.send(data)”即可。
但是对于二进制数据的处理稍微复杂。
不过在Firefox3中,可以借助下面的方法来调试ajax发送post二进制数据:
相关脚本代码:
辅助工具:WinHex 15.6
步骤:
1.用WinHex打开二进制数据文件,或者直接在WinHex中编辑二进制数据也可。
2.选择WinHex菜单中的“编辑(Edit)”→“复制(Copy)”→“GREP Hex”,将二进制数据以“/xNN”的格式复制到剪贴板。
3.运行上面的脚本代码,根据提示输入刚刚复制的数据即可。
可以结合Firebug调试相关请求数据。
说明:
因为二进制数据不方便表示,所以先借助WinHex将数据转换为“GREP Hex”文本,输入到脚本中。
脚本将“GREP Hex”解析为JS内部保存的双字节字符串,此字符串的特点就是,每个字符的低位字节与二进制的每个字节一一对应。
在FF中,“xhr.send(data)”方法的参数“data”可以是一些特定对象,或者是一个字符串。
对于字符串,它会按照某种编码(经测试可知貌似是UTF-8)转换为二进制,这会无法还原为原始的二进制数据。
不过FF另外提供了一个“xhr.sendAsBinary(data)”方法,此方法接受一个字符串做参数,它将每个字符的高位字节舍弃,只保留低位字节,这样就能还原为我们的原始数据了。
此“工具”实现还算简单,不过使用还是稍微麻烦。
进一步深入的话,貌似可以实现通过文件对话框选取文件直接读取其内容并发送,不过实现就更麻烦了。
PS:“xhr.sendAsBinary(data)”是非标准方法,所以只能在FF3中使用。
参考:
https://developer.mozilla.org/en/XMLHttpRequest#sendAsBinary()