【问题标题】:Possible to reference javascript files above document root?可以引用文档根目录上方的 javascript 文件吗?
【发布时间】:2015-10-20 00:12:07
【问题描述】:

我正在做一个项目,其中http://www.mywebsite.com/index.html/var/www/public 中,这是文档根目录(根据/etc/apache2/sites-available/000-default.conf)。我在/var/www/js 中有javascript 文件,我想在/var/www/public/index.html 文件中引用这些文件。这是我到目前为止尝试过的方法

<script src="/js/js_file.js"></script>
-
<script src="js/js_file.js"></script>
-
<script src="../js/js_file.js"></script>
-
<script src="../../js/js_file.js"></script>

这些都不起作用。

如何引用文档根目录之外的 javascript 文件?

【问题讨论】:

  • 如果可能的话,您可以像黑客任意访问您的文件系统一样进行操作。
  • 允许客户端访问文档根目录之外的文件是一个重大的安全风险 - 这就是网络服务器软件默认阻止它的原因。
  • 这只是基于我阅读的某些内容以及查看 Laravel 目录结构的文章的假设。看来至少数据库凭据被放置在文档根目录之外是一种好的做法,我不认为这样做是不好的@Daemedeor。
  • @aCarella 是的,但我们谈论的是 js 而不是 php
  • 将文件放在 docroot 之外的想法是合理的,只是它对运行服务器端代码有用,而不是客户端代码。

标签: javascript reference path src document-root


【解决方案1】:

您可以通过向 Apache 配置添加重写规则来实现此目的。 See the apache url rewrite guide。这个想法是将内部目录映射到用户输入的 url 字符串。

类似这样的:

RewriteCond   %{HTTP_HOST}  \.mywebsite\.com$
RewriteRule  ^/js/(.*)\.js$ var/www/js/$1

将允许公共用户通过公共 url mywebsite.com/js/test.js 访问 var/www/js/test.js。

【讨论】:

  • 很高兴知道如果我需要这样做,我可以使用它。
【解决方案2】:

您可以添加 FollowSymLinks (See this thread),并在 docroot 中符号链接您的 js 文件夹(可能在 /var/www/public/js)。

实际上,您正在为 js 设置别名,因此它根本不在 docroot 之外。

【讨论】:

  • 所以它根本不在 docroot 之外 - 这是一种不好的看待它的方式。在网络服务器上允许符号链接完全消除了 docroot 限制的好处,因为您可以符号链接到文件系统上的任何位置——如果出错,您的系统就会处于极度脆弱的状态。
  • 非常好!考虑到 OP 一开始就问这个问题,在这种情况下当然应该强调安全性。
猜你喜欢
  • 1970-01-01
  • 2012-04-29
  • 2022-12-04
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
  • 2014-02-19
  • 2014-11-26
  • 1970-01-01
相关资源
最近更新 更多