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

Ben*_*ack 6 html javascript css php .htaccess

这是我的目录,如下所示:

  • index.html
  • data.js
  • .htaccess

index.html中的内容:

<html>
<body>
<script src="data.js" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  • 我不希望用户data.js通过直接链接看到我的内容,例如www.sample.com/data.js

  • 但data.js仍然允许来自index.html

我在.htaccess中尝试过:

deny from all
Run Code Online (Sandbox Code Playgroud)

要么

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

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

谢谢。

Sha*_*ran 5

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

不可能。

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


A-3*_*312 4

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

仅页面实时视图

您可以使用 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>
Run Code Online (Sandbox Code Playgroud)

对于包含 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>
Run Code Online (Sandbox Code Playgroud)

只能直接观看

将文件放入 HTML 文件(myfile.js 到 myfile.html)中,就像这样在直接视图中您可以执行 JavaScript 函数。

function Hello() {
    alert("Hello");
}
Hello();
//<script>document.body.innerHTML = "";</script>
Run Code Online (Sandbox Code Playgroud)

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

AddType text/html .js
Run Code Online (Sandbox Code Playgroud)

或者最小化/解析你的 JS

您可以使用这样的工具: