我想对公共访问隐藏json文件.我该怎么做


I want to hide json file from public access. How do I do that?

我得到了一个网站,javascript文件正在基于以前的select选项将一个json文件(使用getJson)加载到一个select元素的选项中。

但同时,public可以直接访问json文件。

我只希望服务器可以访问此文件,并在select元素中加载相应的选项。但我不希望公众可以直接访问json文件(避免他们下载等)

我该怎么做?通过htaccess?还是别的什么?我在htaccess中尝试了'FILES'规则,但服务器也无法访问json文件。

Javascript在客户端运行,因此您的访问者可以获得Javascript使用的任何资源。如果您想隐藏任何内容,则需要通过服务器端生成来替换javascript代码。

您无法保护json数据。如果公众无法访问数据,那么您的页面也无法访问它。

您可以在json文件的顶部检查请求者的ip如果不是您的服务器,则退出

这是的例子

if($_SERVER['REMOTE_ADDR'] != '190.180.0.1')
exit ('You can not use this file');

并且你必须用你的服务器ip 替换ip

我错过了这个部分(javascript文件正在加载)

确保上面的代码不会工作,因为java脚本是客户端的因此,如果您阻止了除服务器之外的所有请求,那么您的用户也无法加载此文件

您无法真正保护发送到客户端浏览器的数据。一个坚定的用户将能够找到它。因此,你最好的选择是在将数据发送到客户端之前,在服务器上进行筛选和其他逻辑。

如果您正在运行Apache,则可以使用mod_rewrite。我不确定,但我认为规则看起来像,RewriteRule^(myfile.json)-[F,L,NC]