none
跨域问题 RRS feed

  • 问题

  • 在本机上创建两个域,HTML 页访问另一个域中 XAP,就是不显示。根目录下放了clientaccesspolicy.xml。

    域的配置是没有问题的,因为指向另外一个sliverlight项目是能够正常显示。
    2008年12月11日 7:26

答案

  •  打火机 写:

    实际上报错的原因是因为JS调用后台的C#方法,这跨域是不允许的。不知道怎么解决

     

    http://forums.microsoft.com/china/ShowPost.aspx?PostID=4200779&SiteID=15

    把其他域的xap下载的本域再载入试试

    2008年12月12日 1:52
    版主
  • 详细参见

    http://msdn.microsoft.com/zh-cn/library/cc645023(VS.95).aspx
    2008年12月12日 2:45
    版主
  • 其实发生这种状况的原因是:

    MIME类型中加入  扩展名:.xap    类型:application/x-silverlight-app

    如果是同域的话,基本没啥要求,平时一直只写application/x-silverlight,-app忽略掉了。就算写成 扩展名:.xap    类型:.xap照样能通过。

    而且把.xap后缀给为.swf,然后 <param name="source" value="ClientBin/Main.swf" />也可正常执行。

    但跨域中,必须老老实实的写全

    网上查查关于MIME类型的添加有好几个版本

     

     

    2008年12月15日 3:45

全部回复

  • 问题已找到,但未解决。

     

    C#

    [ScriptableType]

        public partial class Page : UserControl

        {

            [ScriptableMember]

            public event EventHandler<EventArgs> i_close;

            public Page()

            { 

                InitializeComponent();

                HtmlPage.Window.Invoke("InitEvent1");

            }

     

    Js

    function InitEvent1() {

                var control1 = document.getElementById("silverlightBuoyage");

                //alert("初始化完成!");

                control1.content.Script.i_close = i_Close;         

            }

     

      function i_Close() {
                alert("i_Close");
               
            }

    问题出现在js调用后台i_close出错。这问题只出现跨域时(html xap不在同一域下),同一域下正常

    2008年12月11日 10:02
  • 实际上报错的原因是因为JS调用后台的C#方法,这跨域是不允许的。不知道怎么解决

    2008年12月12日 1:25
  •  打火机 写:

    实际上报错的原因是因为JS调用后台的C#方法,这跨域是不允许的。不知道怎么解决

     

    http://forums.microsoft.com/china/ShowPost.aspx?PostID=4200779&SiteID=15

    把其他域的xap下载的本域再载入试试

    2008年12月12日 1:52
    版主
  • 向内(JavaScript 和 DOM 到 Silverlight 托管代码)

    设置  ExternalCallersFromCrossDomain
        

    Silverlight .xap 文件


    <Deployment xmlns="http://schemas.microsoft.com/client/2007"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    EntryPointAssembly="MyAppAssembly"
    EntryPointType="MyNamespace.MyApplication"
    ExternalCallersFromCrossDomain="ScriptableOnly"
    >
    <Deployment.Parts>
    <AssemblyPart Source="MyAppAssembly.dll” />
    <AssemblyPart Source="MyUserControl.dll" />
    </Deployment.Parts>
    </Deployment>

    2008年12月12日 2:43
    版主
  • 详细参见

    http://msdn.microsoft.com/zh-cn/library/cc645023(VS.95).aspx
    2008年12月12日 2:45
    版主
  • 其实发生这种状况的原因是:

    MIME类型中加入  扩展名:.xap    类型:application/x-silverlight-app

    如果是同域的话,基本没啥要求,平时一直只写application/x-silverlight,-app忽略掉了。就算写成 扩展名:.xap    类型:.xap照样能通过。

    而且把.xap后缀给为.swf,然后 <param name="source" value="ClientBin/Main.swf" />也可正常执行。

    但跨域中,必须老老实实的写全

    网上查查关于MIME类型的添加有好几个版本

     

     

    2008年12月15日 3:45