0

我正在尝试以跨域方式与 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"/>
4

1 回答 1

0

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

用于<resource path ="/servlets/targetServlet" include-subpaths ="false"/>定义从站点根目录开始的路径,不能访问任何子目录。使用它是具体的而不是相对的。来自Silverlight 中的网络安全访问限制

该属性是相对于域根的 URI。它指的是可以表示 Web 服务或文件的特定路径。

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

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

于 2010-10-08T15:33:24.070 回答