簡體   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