silverlight - 如何跨域访问 Silverlight XAP 文件?

标签 silverlight cross-domain

我正在尝试将位于一个子域中的 Silverlight 应用程序添加到另一个子域中的网页。出于某种原因,这只是简单的不起作用......我的 Silverlight 应用程序在 http://subA.domain.com/somepage.html 上的页面中被加载。 :

<div id="silverlightControlHost">
    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
        width="800px" height="600px">
        <param name="source" value="http://subB.domain.com/SilverlightApp.xap" />
        <param name="onerror" value="onSilverlightError" />
        <param name="background" value="white" />
        <param name="minRuntimeVersion" value="2.0.31005.0" />
        <param name="autoUpgrade" value="true" />
        <param name="enableHtmlAccess" value="true" />
        <a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;">
            <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight"
                style="border-style: none" />
        </a>
    </object>
    <iframe style='visibility: hidden; height: 0; width: 0; border: 0px'></iframe>
</div>

如果我将 SilverlightApp.xap 移动到 subA.domain.com,它会完美加载。跨域访问 XAP 文件需要哪些步骤?我一直在努力解决这个问题,但似乎一无所获。

谢谢!!

最佳答案

为了帮助遇到同样问题且不想使用 IFrame 的其他人,请参阅此 link ,因为它解决了我的问题。尽管作者指的是 Silverlight 2,但它已经解决了我在 Silverlight 3 中的问题。如果链接断开,我需要做两件事:

-- 在 Silverlight 应用程序中,编辑 AppManifest.xml 以添加以下内容:

<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
ExternalCallersFromCrossDomain="ScriptableOnly">

-- 如果您在 Silverlight 应用程序中使用 HtmlPage(例如在读取传递给托管页面的 QueryString 时),您还必须添加:
<param name="enableHtmlAccess" value="true" />

到托管页面中的 Silverlight 对象。

请注意,上述内容存在安全隐患,我不禁认为这就是 Microsoft 不竭尽全力传播这些信息的原因。但是,就我而言,我没有可编写脚本的 Silverlight 元素,而且由于我编写了 Silverlight 应用程序,因此托管页面允许 Silverlight 应用程序访问它没有问题。

在研究这个时,我注意到这个问题和相应的解决方案与一个单独的问题混淆,即 Silverlight xap 跨域边界访问 wcf 服务的问题。该问题确实需要一个位于承载 wcf 服务的网站根目录下的 clientaccesspolicy.xml 文件。

因此,可以让第一个站点访问第二个站点上的 xap 文件,第二个站点访问第三个站点上的数据服务,以获得最大的灵活性和重用性。

关于silverlight - 如何跨域访问 Silverlight XAP 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1051447/

相关文章:

javascript - JS : cross-domain POST, 不需要响应

javascript - 跨站点服务器上的 jQuery/Ajax 请求不使用该服务器上设置的 (auth) cookie

c# - 这怎么不会在Silverlight中引起跨线程异常?

asp.net-mvc-2 - iframe、跨域 cookie、p3p 策略和 safari 出现错误 : A required anti-forgery token was not supplied or was invalid

javascript - Firefox 中类似灯箱的脚本跨域 iframe

ajax - 如何在用户脚本中发送和检索跨域ajax数据

c# - 输入为空时格式化时间格式的字符串

c# - 当我们可以直接使用隔离存储设置、应用程序设置时,为什么要使用序列化/反序列化功能?

c# - 我需要两个 xmlns :local ="clr-namespace"?

silverlight - 为什么 Entity Framework 在应该更新的时候却插入了?