【发布时间】:2012-09-05 12:29:20
【问题描述】:
我正在使用 extjs4 构建一个驻留在 drupal 中的 webapp。
我的许多 ajax 调用都是针对 drupal 中模块中的菜单项。
我的 css 指向的图像有时位于我的 extjs 文件夹中,有时位于 drupal 中。
一位同事坚持认为使用“../dir_a/”的相对路径是糟糕的设计,并且容易产生风险。
这是正确的吗? 还有其他方法吗?
我的文件夹结构:
- drupal
- v2 (extjs home folder)
- css
- extjs
- sites
- mySite
- modules
- webApp
我的 css 文件包含如下调用:
.x-action-col-cell img.restart-test-icon {
background-image: url(../extjs/examples/sandbox/images/gears.png);
}
我的应用程序有这样的调用:
Ext.Ajax.request({
url: '../webapp/tests/create/',
method: 'Post'
});
编辑:评论者要求澄清。
同事对此的两个主要问题是:
1.“如果服务器端代码将生成像/a/b/c 这样的地址,而没有尾随/,您可能会遇到/a/b/c../d 的情况”
是吗?这听起来更像是服务器端问题。
2. “你见过其他人使用它吗?”
在我看来,这是一种非常糟糕的决定方式。
但我继续使用 firebug 测试了一些 JS 密集型网站(gmail、aws),发现在他们的 JS 或 CSS 中没有使用 ../。
谁能帮我支持我的说法,即完全没问题?
【问题讨论】:
-
问问你的同事他指的是哪些风险
-
相对路径最常用于 CSS 文件,而在实际网页/应用程序中,我建议绝对路径可能更常见——这当然是我一直以来的处理方式——但每个他们自己的。
-
没关系,但我认为使用相对于根目录的URL更好,因为如果使用
../很容易出错。例如,假设您想向上移动 5 个目录,但只使用了四个../。 -
我能想到的唯一风险是,如果您使用像 PHP 这样的服务器端语言并允许用户查看服务器上的文件,而无需通过
fileviewer.php?file=somefile.txt对路径进行清理/沙箱化。您不希望他们阅读../../my_secret_passwords.txt。就客户端而言,我想不出任何风险。 -
@lorenzo.marcon 我已经编辑了我的帖子。
标签: javascript css drupal extjs relative-path