在silverlight开发的过程中不免要遇到跨域的问题,在这里以跨域调用Webservice为例子来分析 一下跨域的问题。 先介绍一下我的测试项目,我用flash和silverlight一同来调用一个webservice,一个flash客户端,一个 silverlight客户端,一个web项目来host flash和silverlight
在silverlight开发的过程中不免要遇到跨域的问题,在这里以跨域调用Webservice为例子来分析一下跨域的问题。
先介绍一下我的测试项目,我用flash和silverlight一同来调用一个webservice,一个flash客户端,一个silverlight客户端,一个web项目来host flash和silverlight,再加上一个webservice端。
flash发布到web项目的swf文件夹下。 web项目中的clienttestpage.html中的sl和flash来调用webservice。
具体如何调用webservice我这里就略去了。
我的webservice里有一个方法
[WebMethod]
public string SayHello(string name) {
return "Hello " + name;
}
webservice
这里发现他先去webservice所在的域的根目录下请求一个 clientaccesspolicy.xml 的文件,在没有到后又去请求一个crossdomain.xml的文件,同样也是没有找到,返回404。
好,这里我在webservice域根下放入一个clientaccesspolicy.xml
clientaccesspolicy.xml
<?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 include-subpaths="true" path="/"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
因为webservice有requestheaders的请求,所以要加上红色部分。
再次调用看看是什么情况
再次调用看看是什么情况