【问题标题】:Silverlight: How to ignore (the absence of) crossdomain.xml with System.Net.WebClient?Silverlight:如何使用 System.Net.WebClient 忽略(缺少)crossdomain.xml?
【发布时间】:2010-09-30 21:38:34
【问题描述】:

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

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

在 Silverlight 中有什么方法(如果有的话)?我是否使用了正确的课程?

【问题讨论】:

    标签: c# .net silverlight cross-domain webclient


    【解决方案1】:

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

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

    【讨论】:

    • 代理的想法虽然打开了一些关于可能利用的蠕虫病毒(例如使您的服务器参与 DDOS 攻击)
    【解决方案2】:

    你为什么要摆脱它?

    如果您分析 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

    【讨论】:

      猜你喜欢
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 2019-09-18
      • 2017-03-07
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多