如何解决silverlight应用程序的跨域问题?

时间:2014-01-16 19:19:14

标签: silverlight silverlight-5.0 crossdomain.xml

我有一个silverlight应用程序尝试通过以下方式访问另一个站点(托管在JBOSS或Tomcat上):

WebClient proxy;

//......
proxy.DownloadStringAsync(url);  //this url point another site hosted by JBOSS or Tomcat with http. https not available for this site. 

使用https访问Silverlight。当我运行silverlight应用程序并尝试访问另一个站点时,在弹出窗口中收到如下消息:

显示混合内容?

然后选择是/否,浏览器崩溃了。

如果我使用http来访问我的silverlight应用程序,那么一切都很好。

然后这个问题被认为是跨域问题。跨域xml文件可以放在JBOSS或Tomcat站点上。不确定策略文件是什么样的。此案例的任何示例策略xml文件?然后我可以把它放在JBoss或Tomcat网站上进行测试吗?

评论: 找到并将尝试。

1 个答案:

答案 0 :(得分:0)

首先,您只需要Silverlight的clientaccesspolicy.xml(它有更多功能)。 crossdomain.xml是一种较旧的安全访问模型,兼容Flash等

其次,该文件必须位于https站点的根目录中,因为与http站点相同。如果您的应用访问了http和https网站,则需要在两个网站上都有。

第三,如果您仍然遇到问题,请在配置中明确添加https。例如与

 <allow-from>
      <domain uri="http://*">
      <domain uri="https://*">
 </allow-from>)

Network Security Access Restrictions in Silverlight上的此页面提供了更多选项详情

示例文件:

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <!--Enables Silverlight 3+ all methods -->
    <policy>
      <allow-from http-methods="*">      
          <domain uri="http://*">
          <domain uri="https://*">
      </allow-from>      
      <grant-to>      
        <resource path="/api" include-subpaths="true"/>
      </grant-to>      
    </policy>
    <!--Enables Silverlight 2 clients to continue to work normally -->
    <policy>
      <allow-from >      
          <domain uri="http://*">
          <domain uri="https://*">
      </allow-from>      
      <grant-to>      
        <resource path="/api" include-subpaths="true"/>
      </grant-to>      
    </policy>
  </cross-domain-access>
</access-policy>