如何允许脚本读取javascript文件但阻止用户直接查看文件?

时间:2016-04-10 19:06:52

标签: javascript .htaccess

我有一个主要的javascript文件(比如main.js),它从其他javascript文件中调用来自不同函数的值。我想要的是主要应该在索引页面或任何其他页面或脚本调用后立即正常运行,但如果用户试图查看其中的内容,他们将无法访问所写的内容在它内部(否则它应该返回一个禁止的错误)。此外,搜索了很长时间后,我知道.htaccess可以用来做,所以我已经尝试了这两种方法:

方法1:

Order Allow,Deny    
Deny from all

当从任何地方调用它时,它只会停止要加载的主要javascript文件,它根本就会停止运行。虽然它阻止用户直接查看它。

方法2:

RewriteEngine on    
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com [NC]    
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com.*$ [NC]    
RewriteRule \.(js)$ - [F]    

这实际上有效,但用户仍然可以在第一次尝试时访问它。在第一个阻止对该文件的访问之后休息每次其他尝试并显示禁止的错误,直到主站点再次打开或刷新。所以任何人都可以在不断刷新主网站页面然后从中访问代码后看到我的main.js。

我需要知道如何才能正确实现这一目标?喜欢脚本应该在任何其他页面或脚本调用时工作正常,但没有用户可以真正看到它内部的内容。另外,我对htaccess了解不多,所以我们会非常感激这个解释得很多的版本。

1 个答案:

答案 0 :(得分:0)

确实没有万无一失的防止这种情况的方法。实质上,服务器正在发送.js文件以响应http请求。您可以在服务器端将安全性放在文件上,但这只会阻止没有适当授权的用户下载它。一旦用户获得授权,服务器将允许将其下载到客户端。服务器无法阻止客户端应用程序(浏览器或其他内容)允许用户在客户端收到文件后查看该文件。

作为替代方案,您可能需要考虑在.js文件中使用混淆器。这使得人们很难能够破译代码,即使他们确实在查看代码。