繁体   English   中英

Web站点目录之外的引用文件

[英]Reference file outside of Web site directory

如何在网站的根目录之外引用文件?

例如,我的网站位于C:\\ dev \\ TestSite我正在使用ASP.NET和XSP。 webapp将使用mod_mono部署在Apache上。 我有C:\\ images中的图像,我想这样做:

<img src="C:\images\logo.gif"/>

你的img标签的src值将被发送到客户端。 您需要指定相对于文档根目录的路径。 最好的办法是设置一个虚拟文件夹(在IIS中,别名是等效的apache)指向c:\\images路径,然后按如下方式更改提到的标记src路径

<img src="/images/logo.gif" />

要在apache中执行此操作,需要在httpd.conf中使用别名。 这条线看起来像这样

Alias /images c:/images

这是文档http://httpd.apache.org/docs/2.0/mod/mod_alias.html#alias

虽然有可能通过某种方法哈克要做到这一点,这不是一个好主意。 允许IIS帐户访问更大文件系统上的文件/文件夹将是一个很大的潜在安全漏洞。

完成此任务的最佳方法是使用IIS虚拟目录。 将您的内容放在专用于支持该站点的文件夹中,不要让您的整个C:驱动器成为虚拟目录。

您无法在页面的HTML代码中执行此操作。 HTML页面只能引用Web可访问的内容(关于图像,CSS,javascript等)。 您可以创建一个指向图像文件夹的虚拟目录,以便它可以通过Web访问。

编辑:

您的conf文件中的apache方式。

Alias /images "C:/Images"

还有一些家伙的演练

我将假设C:\\ images \\ logo.gif是服务器上的路径,而不是客户端上的路径。

src属性由html客户端(即Internet Explorer)解释。 客户端无法在您的Web目录之外看到任何内容。 实际上,如果您已经提供了允许他们这样做的权限,那么客户端只能看到您网页目录中的内容。 因此,这不是ASP.NET问题,而是Web客户端如何访问Web服务器的问题......这是为安全性而设计的。

为了让您的应用程序使用这些图像,您可以立即想到几个选项 - 这两个选项都不理想:

  1. ASP.NET代码(在代码隐藏中)将需要去抓取文件,并在提供给客户端的html流中提供它,这比我怀疑你愿意更复杂的任务踏上。

  2. ASP.NET代码(使用System.IO)需要从C:\\ images \\ logo.gif中的主页位置获取文件并将其复制到客户端可访问的位置 - 您可以创建一个临时目录,将您的图像复制到它,提供它,删除它,删除目录。

如果可能的话,这些都是应该避免的黑客攻击,但是如果你坚持认为这是你想要做的,那么这将允许你通过ASP.NET应用程序来实现。

最理想的解决方案是将C:\\ Images作为虚拟目录添加到您的文档根目录,即/ ImageCentral - 这样您就可以拥有存储在此目录中的多个网站的中心图像,然后客户端可以引用它们只是通过向每个指向中央图像文件夹的虚拟目录添加虚拟目录。 正如DaveSwersky指出的那样,不要制作包含敏感信息虚拟目录的任何目录,只要你将虚拟目录添加到外部可见网站,就可以让人们自由地统治其中的任何信息。

祝好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM