我使用Minify来缩小和缓存我的所有脚本请求。 我只希望我的用户能够访问缩小版本的JavaScript文件。
在www.example.com/min
缩小谎言,我的脚本位于www.example.com/scripts
。如何阻止直接访问我未明确的JavaScript文件所在的doc_root/scripts
。我宁愿不把它们从文档根目录中删除,但它是一个选项。
请注意我正在使用Zend Framework,因此我的应用程序的实际根目录转移到www.example.com/public
。 htaccess文件处理重写。
答案 0 :(得分:10)
您是否只能在doc_root/scripts
内使用.htaccess文件来阻止通过HTTP访问网络上的.js
个文件?
它不会停止缩小,因为它提供间接访问。
所以在doc_root/scripts/.htaccess
中,就像
<Files ~ "\.js$">
order allow,deny
deny from all
</Files>
请注意,.htaccess
文件的位置在这种情况下很重要。
答案 1 :(得分:5)
您实际上无法阻止面向最终用户的代码。即使您使用PHP或其他服务器端语言提供服务并阻止直接请求,当然仍然可以使用许多工具直接读取它。
您应该考虑到这一点,并注意JavaScript注释,业务知识等。
更新:
但是,如果您正在讨论最终用户无需访问的代码,您可以按照自己的说法将其移出服务器根目录,或者可以阻止目录中的文件(或整个目录)。使用Apache的.htaccess很容易。
order deny, allow
deny from all
您还可以使用.htaccess文件中的mod_rewrite将源文件重定向到缩小版本。
RewriteEngine On
RewriteRule /scripts/(.*)$ /min/$1 [L,NC]
答案 2 :(得分:0)
取决于您正在使用的服务器。假设它是Apache,您可以将其添加到.htaccess文件中:
<Directory ~ "\scripts">
Order allow,deny
Deny from all
</Directory>
或者那种效果......
答案 3 :(得分:0)
唯一的方法是检查引用者,而不是每个人都发送它们,或者发送真实的引用者。换句话说,你不能阻止直接访问真正想要某些东西的人。如果请求是直接请求或通过<script src=....>
类型请求完成,则无法100%准确地确定。
答案 4 :(得分:0)
为了让您的Javascript实际运行,用户的浏览器必须能够最终读取它。 因此,没有真正的方法来“阻止”访问您的脚本文件夹(确切地说,您可以这样做,但这会破坏您的网站,因为浏览器不会看到文件以便运行它们。)
一种解决方案可能是混淆,这使得javascript代码更难以阅读/理解,但最终用户将看到代码,并且通过一些坚持不懈的逆向工程,它可以被去混淆。
我见过有人做的另一件事是创建一个“空”js.html页面,并将所有javascript插入页面中的脚本标签(嵌入式,而非外部),并从他的主页面生成ann ajax请求js.html并将其嵌入页面底部。除非使用诸如firebug之类的开发工具,否则用户在查看源代码时将看不到js。
请注意,最后一个选项也可能会导致一些延迟,具体取决于您加载的代码的数量。但是这里的关键是不阻止对脚本的访问,只是让它们更难获取/读取/复制。
编辑:oops,也是误读。我认为在这种情况下最好的解决方案是在脚本文件夹中使用htaccess文件拒绝所有访问
答案 5 :(得分:0)
这个答案比问题要新颖(仅几年,没什么)
您无法拒绝对JavaScript文件的访问,因为无法从<script>
标签访问它们。
但是我找到了一种解决方法:
RewriteEngine On
RewriteRule ^.*\.js$ /invalid.html [R=301,L]
将其放在网站主文件夹中的.htaccess文件中。 (在htdocs或public_html下)。 这将自动重定向所有人。所以他们看不到。