【原文来自于http://hi.baidu.com/heiru/blog/item/7c61b01c54b9f18186d6b61d.html,写在这里以做备份,在原文的基础上做了适当编辑。】
Silverlight 出于对安全性的考虑默认情况下对URL的访问进行了严格的限制,只允许访问同一子域下的URL资源。
下表列出了Silverlight 2.0 中 URL 访问规则:
WebClient对象 | Media、images、ASX | XAML 文件、Font 文件 | 流媒体 | |
允许的协议 | HTTP, HTTPS | HTTP, HTTPS, FILE | HTTP, HTTPS, FILE | HTTP |
跨协议访问 | 不允许 | 不允许 | 不允许 | 不允许来自HTTPS的访问 |
跨Web域访问 | 不允许 | 如果不是来自HTTPS则允许 | 不允许 | 允许 |
跨安全区域访问(Windows) | 不允许 | 不允许 | 不允许 | 不允许 |
跨安全区域访问(Macintosh) | 不允许 | 允许 | 不允许 | 允许 |
允许重定向 | 同域允许 | 允许 | 同域允许 | 不允许 |
如果WCF与Silverlight Web不是在同一站点,那么我们就要在被访问端的根域放上两个XML文件ClientAccessPolicy.xml,CrossDomain.xml.
这两个文件的格式需要是utf-8的,并且需要放在根目录,即如果你的IIS版本是6并且你是新建的虚拟目录,这时你需要将这两个文件放到C:\inetpub\wwwroot中,而不是放到虚拟目录的根目录。
ClientAccessPolicy.xml文件内容如下:

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from>
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
<access-policy>
<cross-domain-access>
<policy>
<allow-from>
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
CrossDomain.xml的格式非常简单,其根节点为<cross-domain-policy> ,其下包含一个或多个<allow-access-from>节点,<allow-access-from>有一个属性 domain,其值为允许访问的域,可以是确切的 IP 地址、一个确切的域或一个通配符域(任何域)。

<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="http://www.lishewen.com.cn/"/>
<allow-access-from domain="*.lishewen.com.cn"/>
<allow-access-from domain="222.217.221.16"/>
</cross-domain-policy>
<cross-domain-policy>
<allow-access-from domain="http://www.lishewen.com.cn/"/>
<allow-access-from domain="*.lishewen.com.cn"/>
<allow-access-from domain="222.217.221.16"/>
</cross-domain-policy>
关于这两个文件的更多内容可以看MSDN http://msdn.microsoft.com/en-us/library/cc645032(VS.95).aspx