2011-01-31 26 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代理(我找不到任何引用),那么你就不能限制访问。

相关问题