不允许重定向跨域策略文件解决方法

不允许重定向跨域策略文件
微软的帮助文档中关于silverlight跨域访问的描述,silverlight检测到有向其他站点请求Web服务时,会先请求Web站点上的策略文件,获取授权。即:要访问http://www.ms.com/data,就必须获取http://www.ms.com/clientaccesspolicy.xml.
其中有一句提到“不允许重定向策略文件”。

假设有以下情况:
站点 域名 IP 是否有策略文件
A www.abc.com 192.168.1.5 有
B www.abc.com/service1 192.168.1.10 无
C www.abc.com/service2 192.168.1.11 无

域名和IP地址之间使用单独的dns服务器转换,假设其地址192.168.1.2.

是否可以通过在http://www.abc.com/上请求到的策略文件(将grant-to属性设置为所有子域,即涵盖了service1和service2),
而使得对http://www.abc.com/service1和http://www.abc.com/service2不需要策略文件?

“不允许重定向策略文件”是否就是指这种域名形式的转换?

------解决方案--------------------
使用策略文件后,会根据根据允许的domain进行权限分配,如果设置一级域名,即可自动扩展权限到其子域。

1.<?xml version="1.0" encoding="utf-8"?> 
2.<access-policy> 
3.<cross-domain-access> 
4.<policy> 
5.<allow-from http-request-header="*"> 
6.<domain uri="*"/> 
7.</allow-from> 
8.<grant-to> 
9.<resource path="/Services" include-subpaths="true"/> 
10.</grant-to> 
11.</policy> 
12.</cross-domain-access> 
13.</access-policy>
------解决方案--------------------
浏览器访问web服务器(这里显然是以http Get命令),服务器返回状态码200 OK,同时也在消息体中有输出的xml。而重定向是指服务器返回30?这类状态码,然后浏览器应该去新的地址上去Get请求,这叫做重定向。