Silverlight - ClientAccessPolicy.xml语法

时间:2010-10-08 12:27:50

标签: silverlight securityexception clientaccesspolicy.xml

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

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

具体情况如下:

访问的URL: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"/>

1 个答案:

答案 0 :(得分:0)

如果要启用所有http和https呼叫者,则应使用<domain uri ="*" /><domain uri ="http://*" />只会启用所有http来电。

使用<resource path ="/servlets/targetServlet" include-subpaths ="false"/>定义来自站点根目录的路径,但不能访问任何子目录。使用它是具体的而不是相关的。来自Network Security Access Restrictions in Silverlight

  

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

     

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

     

使用此元素和属性   仅适用于WebClient和WebClient的请求   HTTP类。