4

我有一个网站,并且 javascript 文件正在根据先前的选择选项将 json 文件(使用 getJson)加载到一个选择元素的选项中。

但与此同时,公众可以直接访问该 json 文件。

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

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

4

5 回答 5

6

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

于 2013-07-03T12:28:16.690 回答
1

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

于 2013-07-03T12:29:37.677 回答
1

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

这是示例

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

并确保您必须将 ip 替换为您的服务器 ip

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

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

于 2013-07-03T12:30:03.390 回答
0

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

于 2013-07-03T12:27:44.887 回答
0

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

于 2013-07-03T12:32:57.123 回答