2

用于执行 HTTP 请求时出现安全异常System.Net.WebClient,这是由于目标服务器上的crossdomain.xmlorclientaccesspolicy.xml丢失或限制过多。我知道这是有充分理由的(cookies 和跨站点请求伪造),但它不适用于我的情况,因为我只需要在不使用 cookie 或任何花哨的东西的情况下对任意 URL 执行纯 HTTP GET 请求

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

在 Silverlight 中执行此操作的方法是什么(如果有的话)?我使用正确的课程吗?

4

2 回答 2

2

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

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

于 2009-01-12T10:00:24.650 回答
1

你为什么要摆脱它?

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

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

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

于 2009-01-13T01:21:32.307 回答