使用System.Net.WebClient
执行HTTP请求时出现安全异常,原因是目标服务器上的crossdomain.xml
或clientaccesspolicy.xml
丢失或限制太多。我知道有一个很好的理由(cookie和跨站点请求伪造),但它不适用于我的情况,因为我需要的是对任意URL的纯HTTP HTTP GET请求而不使用cookie或任何花哨的< /强>
我已经想到了一个可以获取URL的代理,但这听起来更像是一个丑陋的解决方法,更不用说浪费带宽了。
在Silverlight中执行此操作的方式是什么(如果有的话)?我使用的是合适的班级吗?
答案 0 :(得分:2)
我认为这实际上是不可能的,至少对于WebClient来说。 整个想法是限制(保护......)客户端免受对其他服务器的不必要请求。
要解决这个问题,您可以使用代理Web服务从Web服务器调用“任意URL”,并将结果传递回Silverlight客户端。这样,当您实现所需的功能时,客户端将受到保护。
答案 1 :(得分:1)
你为什么要摆脱它?
如果您在跨域方案中分析Silverlight请求,则它们始终调用clientaccesspolicy.xml文件。您无法更改此行为(Silverlight运行时内部)。此外,如果找不到clientaccessolicy.xml文件,则调用Flash / Flex equivelant(crossdomain.xml)。如果两者都不存在或者不允许来自该域的请求,那么您的请求将会失败。
我写了一篇关于使用HttpHandlers的文章,以便不必将这些XML文件放在本地Web服务器上,并且可以使它们动态化。这篇文章位于: