我有一个运行在网页上的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吗?
答案 0 :(得分:2)
从Silverlight或Web浏览器访问文件与Web服务器看起来相同,因此您无法保证用户无法获得访问权限。您可以做的最好的事情是模糊获取文件所需的步骤。
您可以做的一件事就是打开HTTP Watch / Firebug / Wireshark,看看Silverlight客户端是否发送了任何特殊的HTTP标头,标识它是Silverlight发出Web请求。如果您可以识别出唯一的内容,则可以相应地配置Web服务器,以便只允许具有该标头的请求。
如果没有这样的标题,另一种选择是使用某种身份验证。凭据将存储在Silverlight客户端中,因此它不会真正安全,但同样,您将模糊如何获取文件。
您也可以选择将文件编译到客户端,而不是通过网络访问它。
修改强>
它看起来不像Silverlight发送任何标识头。您可以随时通过代码“手动”将标题附加到您的请求中。
答案 1 :(得分:0)
Silverlight将通过http请求检索数据,因为它在客户端运行。除非Silverlight可以使用自定义http代理(我找不到任何引用),否则总会有一种方法来访问该文件,然后您就无法限制访问。