如何允许Silverlight客户端应用程序访问Apache服务器上的文本文件,但不允许浏览器访问?

时间:2011-01-31 02:01:32

标签: silverlight .htaccess

我有一个运行在网页上的Silverlight 4应用程序。我想允许Silverlight客户端通过执行以下操作来下载设置文件:

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

但理想情况下,如果用户尝试通过访问http://www.mywebsite.com/config/settings.xml

直接在浏览器中访问该文件,我想返回403 Forbidden错误

这可以使用.htaccess吗?

2 个答案:

答案 0 :(得分:2)

从Silverlight或Web浏览器访问文件与Web服务器看起来相同,因此您无法保证用户无法获得访问权限。您可以做的最好的事情是模糊获取文件所需的步骤。

您可以做的一件事就是打开HTTP Watch / Firebug / Wireshark,看看Silverlight客户端是否发送了任何特殊的HTTP标头,标识它是Silverlight发出Web请求。如果您可以识别出唯一的内容,则可以相应地配置Web服务器,以便只允许具有该标头的请求。

如果没有这样的标题,另一种选择是使用某种身份验证。凭据将存储在Silverlight客户端中,因此它不会真正安全,但同样,您将模糊如何获取文件。

您也可以选择将文件编译到客户端,而不是通过网络访问它。

修改

它看起来不像Silverlight发送任何标识头。您可以随时通过代码“手动”将标题附加到您的请求中。

答案 1 :(得分:0)

Silverlight将通过http请求检索数据,因为它在客户端运行。除非Silverlight可以使用自定义http代理(我找不到任何引用),否则总会有一种方法来访问该文件,然后您就无法限制访问。