C# Silverlight:如何在System.Net.WebClient中忽略(缺少)crossdomain.xml?

C# Silverlight:如何在System.Net.WebClient中忽略(缺少)crossdomain.xml?,c#,.net,silverlight,cross-domain,webclient,C#,.net,Silverlight,Cross Domain,Webclient,我在使用System.Net.WebClient执行HTTP请求时遇到安全异常,这是因为目标服务器上的crossdomain.xml或clientaccesspolicy.xml缺失或限制太多。我知道这有一个很好的理由(cookies和跨站点请求伪造),但这不适用于我的情况,因为我只需要执行普通HTTP GET请求到任意URL,而不使用cookies或任何花哨的 我已经想到了一个代理来获取URL的想法,但这听起来更像是一个丑陋的解决办法,更不用说浪费带宽了 在Silverlight中有什么方法(

我在使用
System.Net.WebClient
执行HTTP请求时遇到安全异常,这是因为目标服务器上的
crossdomain.xml
clientaccesspolicy.xml
缺失或限制太多。我知道这有一个很好的理由(cookies和跨站点请求伪造),但这不适用于我的情况,因为我只需要执行普通HTTP GET请求到任意URL,而不使用cookies或任何花哨的

我已经想到了一个代理来获取URL的想法,但这听起来更像是一个丑陋的解决办法,更不用说浪费带宽了


在Silverlight中有什么方法(如果有的话)可以做到这一点?我是否使用了正确的类?

我认为这实际上是不可能的,至少在WebClient中是不可能的。 整个想法是限制(保护…)客户端不受对其他服务器的不必要请求的影响


为了解决这个问题,您可以使用代理web服务,从web服务器调用“任意URL”,并将结果传递回Silverlight客户端。这样,在您实现所需功能的同时,客户端仍能得到保护。

为什么要放弃它

如果您分析Silverlight请求…在跨域场景中,它们总是调用clientaccesspolicy.xml文件。无法更改此行为(Silverlight运行时内部)。此外,如果找不到clientaccessolicy.xml文件,它将调用Flash/Flex equivelant(crossdomain.xml)。如果两者都不存在或不允许来自该域的请求,您的请求就会失败

我写了一篇关于使用HttpHandler的文章,以便不必将这些XML文件放在本地web服务器上,并且可以使它们成为动态的。文章位于此处:


代理思想为可能的攻击打开了一罐蠕虫(例如,让您的服务器参与DDOS攻击)