代码之家  ›  专栏  ›  技术社区  ›  Brian Sweeney

同一域上的交叉域错误

  •  0
  • Brian Sweeney  · 技术社区  · 16 年前

    我正在学习使用WCF构建Silverlight 3应用程序,以便与后端进行通信。我们将在Server2008或Vista上部署到iis7。客户端二进制文件和Web服务二进制文件都位于同一个IIS Web目录中。当我点击服务首页时( http://localhost/MyService.svc )它恢复得很好。当我点击应用程序时( http://localhost/index.html )我得到了我的Silverlight应用程序。静态材质渲染得很好,但是我试图用CrossDomainError填充返回的两个字段。据我所知,当您从托管在其他域上的页面访问服务时,会发生这种情况。我不相信我会这样做,除非无意中。

    异常消息是:

    [交叉域错误] 争论: http://localhost:2721/Service1.svc 调试资源字符串不可用。通常,键和参数提供足够的信息来诊断问题。看[一些可怕的网址,我不会在这里复制,因为它无论如何都是无用的]

    我开通了2721号进出港,没有任何影响。

    有什么想法吗?

    2 回复  |  直到 14 年前
        1
  •  2
  •   seth    16 年前

    对于被认为具有相同来源的两个文档,所有内容都必须完全相同:协议(http/https)、域和端口。

    所以,如果你敞开心扉 http://localhost 并尝试提出请求 http://localhost:2721 你会得到那个错误。

        2
  •  1
  •   Jaimal Chohan    16 年前

    您需要在网站的根目录下有一个crossdomain.xml和/或clientaccesspolicy.xml(对于Flash兼容性,Crossdopain.xml是必需的,两者都与Silverlight一起工作)。此XML需要包含以下内容:

    <?xml version="1.0" encoding="utf-8" ?>
    <access-policy>
      <cross-domain-access>
        <policy>
          <allow-from http-request-headers="*">
            <domain uri="*"/>
          </allow-from>
          <grant-to>
            <resource path="/" include-subpaths="true" />
          </grant-to>
        </policy>
      </cross-domain-access>
    </access-policy>
    
    推荐文章