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