【问题标题】:Silverlight - ClientAccessPolicy.xml SyntaxSilverlight - ClientAccessPolicy.xml 语法
【发布时间】:2010-10-08 12:27:49
【问题描述】:

我正在尝试以跨域方式与 Apache Web 服务器通信。

我在域的根目录上设置了一个 clientaccesspolicy.xml 文件,当尝试向已设置的 Java servlet 发出 GET 请求时,Silverlight 客户端成功检索到该文件。

具体是这样的:

访问网址:dev.corp.companyname.com/servlets/targetServlet

clientaccesspolicy.xml 文件如下所示:

<access-policy> 
  <cross-domain-access> 
    <policy> 
      <allow-from http-request-headers ="*"> 
        <domain uri ="http://*" /> 
      </allow-from > 
      <grant-to > 
        <resource path ="servlets/targetServlet" include-subpaths ="false"/> 
      </grant-to> 
    </policy > 
  </cross-domain-access> 
</access-policy> 

我收到带有“安全错误”的常见 SecurityException 作为消息。我假设这意味着 clientaccesspolicy.xml 文件设置正确。

以下是问题: 应该

<domain uri ="http://*" />

成为

<domain uri ="*" />

还有。应该

<resource path ="servlets/targetServlet" include-subpaths ="false"/> 

成为

<resource path ="/servlets/targetServlet" include-subpaths ="false"/>

【问题讨论】:

    标签: silverlight securityexception clientaccesspolicy.xml


    【解决方案1】:

    如果你想启用所有 http 和 https 调用者,你应该使用&lt;domain uri ="*" /&gt;&lt;domain uri ="http://*" /&gt; 只会启用所有 http 调用者。

    使用&lt;resource path ="/servlets/targetServlet" include-subpaths ="false"/&gt; 定义从站点根目录开始的路径,不能访问任何子目录。使用它是具体的而不是相对的。来自Network Security Access Restrictions in Silverlight

    属性是相对于的URI 域的根。它指的是一个 可以代表网络的特定路径 服务或文件。

    路径不能包含通配符 字符或字符不 统一资源认可 标识符 (URI):通用语法, http://ietf.org/rfc/rfc3986

    使用了这个元素和属性 仅用于来自 WebClient 的请求和 HTTP 类。

    【讨论】:

      猜你喜欢
      • 2011-01-11
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 2011-12-29
      • 2011-01-23
      • 1970-01-01
      相关资源
      最近更新 更多