Silverlight跨域访问策略
默认情况下,Silverlight仅支持同域或是源站点上调用Web Service,这意味着调用必须在同一子域、协议和端口,也就是同域的概念是相同子域,相同协议和相同端口。Silverlight支持两种跨域策略的文件:
(1) Silverlight的跨域策略(clientaccesspolicy.xm)
<?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>
(2) Flash的跨域策略(crossdomain.xml)的子集
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" header=”*” />
</cross-domain-policy>
接到请求之后,会在Web服务器的根目录查找Silverlight的跨域策略文件,如果找不到会找flash的跨域策略文件,如果仍然找不到,那么会返回相应的异常。
Silverlight的跨域调用策略文件可以使用通配符,<domain uri=”*” >这就启用了http和Https,在策略文件中,可以通过如下三种方式来启用标头:
(1) 指定单个标头,如SOAPAction
(2) 逗号分隔的标头列表,SOAPAction,x-custom-header
(3) 启用所有标头的通配符