我的Angular应用程序使用$http
$http.get('my.json').success(function(data){ ... };
不幸的是,此方法将JSON文件加载到浏览器中,并允许用户查看其内容。
Safari的屏幕截图
我想隐藏该用户的文件。
改进我的问题。我知道我无法完全隐藏用户的数据。 用户可以轻松编写脚本来从我的站点中删除数据。 我只是不想轻易地将这些文件交给用户,让他们坐在那里让他只是复制和粘贴。
答案 0 :(得分:4)
您发送给客户的所有内容无论如何都会被客户看到。没有办法绝对将它隐藏起来。
您所能做的只是.zip或编码服务器上的数据,并在客户端解压缩或解码。但即使在这种情况下,所有解码机制都可供用户使用,如果他愿意并具备一些技能,他可以解码并访问您发送给他的所有数据。
<强> UPD:强>
好的,你想要弄清楚你的数据,以便客户看不到简单的方法。
您需要以某种方式对服务器上的数据进行编码,将其编码发送到客户端,然后在客户端上进行解码,以便您可以使用它。
Checkout lz-string - 它的js库可以归档/取消归档json字符串,将它们转换为二进制格式,因此数据变为unreadable。并且它非常快(我没有注意到编码/解码2Mb字符串的任何延迟 - 我用它来压缩数据并将其存储在localStorage中)。
压缩json和LZString.compress(JSON.stringify(data))
解压缩就像JSON.parse(LZString.decompress(data))
一样简单。
除了你需要的东西之外 - 找到一个使用这种格式的服务器端库。如果您在服务器上使用NodeJS,则可以使用lz-string本身。否则,快速谷歌搜索给了我php的解决方案 - 我认为很有可能找到其他语言的解决方案..
答案 1 :(得分:1)
如果您希望用户只看到文档的某些部分,则应在服务器上对其进行过滤。
创建某种服务/ Api-function / etc.它加载文档并通过ajax请求传递用户信息。现在根据此用户信息对其进行过滤,并返回过滤后的数据。