使用System.Net.WebClient执行HTTP请求时出现安全性异常,这是因为目标服务器上的crossdomain.xmlclientaccesspolicy.xml要么丢失,要么限制太多。我知道有一个很好的理由(cookie和跨站点请求伪造),但它不适用于我的情况,因为我需要的是对任意URL的纯HTTP HTTP GET请求而不使用cookie或任何花哨的

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

在Silverlight中执行此操作的方式是什么(如果有的话)?我使用的是合适的班级吗?

有帮助吗?

解决方案

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

要解决这个问题,你可以做的是拥有一个代理网络服务,它将调用<!>“任意网址<!>”;从您的Web服务器,并将结果传递回Silverlight客户端。这样,当您实现所需的功能时,客户端将受到保护。

其他提示

你为什么要摆脱它?

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

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

http://silverlighthack.com/post/2008/11/08/Silverlight-clientaccesspolicyxml-files-for-the-Enterprise-(Part-1-of-2).aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top