如何使用从字符串创建Web worker(通过POST请求提供)?
我能想到的一种方法,但我不确定如何实现它,是通过从服务器响应创建数据URI,并将其传递给Worker构造函数,但我听说有些浏览器不允许这,因为相同的原产地政策.
注意:作为Worker构造函数的参数传递的URI必须遵循同源策略.目前,浏览器供应商对数据URI是否来源不一致存在分歧; Gecko 10.0(Firefox 10.0/Thunderbird 10.0)及更高版本确实允许数据URI作为工作人员的有效脚本.其他浏览器可能不同意.
这里还有一篇关于whatwg讨论它的帖子.
如何使用javascript将UTF-8字符串转换为Latin1编码的字符串?
这是我想要做的:
并使用以下代码将其传递给cryptoJS进行哈希计算:
cryptosha256 = CryptoJS.algo.SHA256.create();
cryptosha256.update(text);
hash = cryptosha256.finalize();
Run Code Online (Sandbox Code Playgroud)这一切都适用于文本文件.使用代码散列非文本文件(image/.wmv文件)时出现问题.我在另一篇博客中看到,CryptoJS作者要求使用Latin1格式而不是UTF-8发送字节,这就是我被困住的地方.
不确定,如何在javascript中使用arraybuffer中的Latin1格式生成字节(或字符串)?
$('#btnHash').click(function () {
var fr = new FileReader(),
file = document.getElementById("fileName").files[0];
fr.onload = function (e) {
calcHash(e.target.result, file);
};
fr.readAsArrayBuffer(file);
});
function calcHash(dataArray, file) {
cryptosha256 = CryptoJS.algo.SHA256.create();
text = CryptoJS.enc.Latin1.parse(dataArray);
cryptosha256.update(text);
hash = cryptosha256.finalize();
}
Run Code Online (Sandbox Code Playgroud)