2011-01-31 50 views
1

我有一個運行在網頁上的Silverlight 4應用程序。我想允許Silverlight客戶端通過執行類似下載一個設置文件:如何允許Silverlight客戶端應用程序訪問Apache服務器上的文本文件,但不允許瀏覽器訪問?

Uri url = new Uri(@"config\settings.xml", UriKind.Relative); 
WebClient client = new WebClient(); 
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted); 
client.DownloadStringAsync(url); 

但理想情況下,我想,如果用戶試圖直接通過訪問訪問該文件在瀏覽器返回一個403 Forbidden錯誤http://www.mywebsite.com/config/settings.xml

這可能使用.htaccess嗎?

回答

2

從Silverlight或從Web瀏覽器訪問文件看起來與Web服務器一樣,所以沒有太多的工作可以保證用戶無法訪問。您可以做的最好是混淆獲取文件所需的步驟。

有一兩件事你可以做的就是打開HTTP手錶/螢火蟲/ Wireshark的,看看Silverlight客戶端發送任何特殊的HTTP頭標識它的Silverlight使得Web請求。如果您可以識別獨特的內容,則可以相應地配置您的Web服務器,以便只允許使用該標頭的請求。

如果沒有這樣的頭部,另一個選項是使用某種認證。該證書將被存儲在Silverlight客戶端,所以它不會真的是安全的,但同樣,你會混淆如何獲取文件。

您也可以選擇編譯文件到客戶端,而不是訪問它在網上的。

編輯:

它看起來並不像Silverlight的發送任何標識頭。您可以通過代碼「手動」將標題追加到您的請求中。

0

Silverlight將通過http請求檢索數據,因爲它運行在客戶端。總會有訪問該文件的方式,除非Silverlight可以使用自定義的HTTP代理(我找不到任何引用),那麼你就不能限制訪問。

相關問題