阻止直接访问js,css文件但允许从index.html访问?

时间:2014-01-05 08:41:33

标签: javascript php html css .htaccess

这是我的目录:

  • 的index.html
  • data.js
  • 的.htaccess

index.html中的内容:

<html>
<body>
<script src="data.js" />
</body>
</html>

我的问题是:

  • 我不希望用户通过data.js

  • 这样的直接链接看到我的www.sample.com/data.js
  • data.js仍然允许从index.html

  • 进行访问

我试过像.htaccess一样:

deny from all

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC] 
RewriteRule \.(gif|jpg|css|js|png)$ - [F]

但它总是阻止从index.html访问。

感谢。

3 个答案:

答案 0 :(得分:5)

  

我不希望用户通过直接链接查看或下载我的data.js   www.sample.com/data.js

不可能。

JS将在客户端呈现,即无论您采取什么措施保护它,都会将其下载到缓存中。

答案 1 :(得分:2)

在提问之前尝试进行搜索。有很多搜索结果可用于此类主题。

部分链接:

1。 How to prevent direct access to CSS and JS files

2 .. http://www.codeproject.com/Questions/287331/Prevent-user-from-viewing-CSS-or-Javascript-of-any




等......


所有人都有一个共同的答案: 您无法隐藏/阻止访问者访问CSS或JS文件。换句话说,“不可能”

答案 2 :(得分:2)

我的提示很容易被绕过,但不小心,我们可能会被困。

仅显示页面的实时视图

您可以使用javascript替换或删除脚本标记,以便在页面的实时视图中隐藏它。但是如果你直接观看网络,你可以很容易地看到javascript文件/代码。

<div id="RemoveMe0">
    <script type="text/javascript">
        //This code it is hidden to live view.
        var my_var = 5 + 5;

        $('#RemoveMe0').remove();
        //or document.getElementById("RemoveMe0").innerHTML = "";
    </script>
</div>

包括javascript:

<div id="RemoveMe1">
    <script type="text/javascript" src="Javascript/MyJS.js"></script>
    <script>
        //Your include it is hidden to live view.
        $('#RemoveMe1').remove();
    </script>
</div>

仅直接查看

将您的文件放在HTML文件中(myfile.js到myfile.html),在直接视图中可以执行javascript函数。

function Hello() {
    alert("Hello");
}
Hello();
//<script>document.body.innerHTML = "";</script>

或者,如果您不想重命名文件,可以使用.htaccess文件修改文件头。

AddType text/html .js

或者缩小/解析你的JS

您可以使用以下工具: