有没有任何已知的方法可以隐藏"或者只是让用户很难看到和理解我的客户端对象(存储为JSON对象)? 我想要的原因是因为我不希望别人简单地复制我的数据。
考虑到我从服务器端获取数据的事实,而不仅仅是将其提取到JSON对象,我猜我可以添加一些混合服务器上的数据的算法,只有我可以知道如何将其插回客户端。
我当然知道这不是100%隐藏的解决方案,因为在客户端仍然可以看到所有内容。
我希望我的问题能够很好地理解我的目标。
答案 0 :(得分:2)
我想你只想编码json对象并在客户端存储/使用它。
如果我的理解是正确的,您可以考虑以下方式。 这个想法是从服务器编码我们的数据并在客户端解码它。虽然这种方式对用户来说并不是完全不可见的,但是在缩小脚本之后,获取解码数据需要花费很多时间和精力,而不仅仅是将json存储在客户端变量中。
例如,服务器端的:
var json = {
name: 'Alex',
age: 25,
location: 'LA'
};
function utf8_to_b64(str) {
// or something equivalent in your lang. Here we use nodejs
return new Buffer(str).toString('base64');
}
var json_str = JSON.stringify(json);
// "{"name":"Alex","age":25,"location":"LA"}"
send_to_client(utf8_to_b64(json_str));
// "eyJuYW1lIjoiQWxleCIsImFnZSI6MjUsImxvY2F0aW9uIjoiTEEifQ=="
客户方:
function b64_to_utf8(str) {
return decodeURIComponent(escape(window.atob(str)));
}
var got_from_server = "eyJuYW1lIjoiQWxleCIsImFnZSI6MjUsImxvY2F0aW9uIjoiTEEifQ==";
var decoded = b64_to_utf8(got_from_server);
// "{"name":"Alex","age":25,"location":"LA"}"
var boom = JSON.parse(decoded);
// get our 'real' json back!
希望这有帮助