我如何跨域名访问一个Silverlight XAP文件?
-
20-08-2019 - |
题
我想加我的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文件?我一直在刮净试图弄清楚了这一点,似乎毫无进展。
谢谢!
解决方案
当的Silverlight请求.XAP文件跨域,内容类型必须是:<强>应用程序/ x-Silverlight的应用。另外,你需要一个跨域策略文件上的其他域。 GL
其他提示
要帮助其他人谁都有同样的问题,而不想使用iframe,请参阅本的链接,因为它解决了我的问题。尽管笔者指的是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(如当读取查询字符串传递给托管页),还必须添加:
<param name="enableHtmlAccess" value="true" />
要在主机页Silverlight对象。
请注意有安全隐患的上方,我不禁想,这就是为什么微软不出去自己的方式来传播这一信息。然而,在我来说,我没有编写脚本的Silverlight的元素,因为我写的Silverlight应用程序,我没有与托管页面,允许它的Silverlight应用程序访问的问题。
在研究这个,我注意到这个问题,并相应的解决方案被用一个单独的问题,一个Silverlight XAP访问跨域边界WCF服务的问题感到困惑。这个问题确实需要位于托管WCF服务的网站的根目录中的文件clientaccesspolicy.xml
因此,有可能以具有第一站点访问上的第二位点,其访问数据服务上的第三位点,获得最大的灵活性和再利用一个XAP文件。
您可以旁边包含Silverlight对象的.xap文件创建一个简单的HTML文件,然后从一个iframe访问此。这是 http://silverlight.live.com/ 如何固定这个问题例如
在你subA.domain.com主页添加的iframe,显示在其他域中的html页面:
<iframe src="http://subB.domain.com/SilverlightApp.html"
scrolling="no"
frameborder="0"
style="width:800px;height:600px">
</iframe>
和SilverlightApp.html上subBdomain.com可能看起来是这样的:
<html>
<body>
<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>
</body>
</html>