web service跨域访问问题解决办法

最近跟着陈刚老师做江西旅游通票的项目,目前尚处于技术储备阶段,分配给我的技术任务是用C#和C++客户端访问Java web service。我用C#的silverlight调用web service的时候老是出现跨域访问的错误,经过几天的努力,终于把问题解决了。

1. 首先确定web service已经成功发布,tomcat已经启动。测试方法是在浏览器中输入发布的WSDL文件的URL,如http://localhost:8080/axis2/services/helloWorld?wsdl 。如果正常显示wsdl内容说明这步没有问题。

2. 查看tomcat6.0/webapps/ROOT目录(具体目录根据具体情况而定)下是否有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 path="/" include-subpaths="true"/>
            </grant-to>
        </policy>
    </cross-domain-access>
</access-policy>

3. 如果做完第二步仍不行,可能是这个xml文件的编码问题,这个文件要用unicode编码,不能用ASCII编码,可用UltraEdit该编码,具体怎么改本人没有试,因为我是从别人机器里拷的正确的文件。

 

 

 

特别提醒: clientaccesspolicy.xml 必须在网站的根目录下,并且通过 http://{domainName}/clientaccesspolicy.xml可以访问到,如果设置了虚拟目录则不能访问到。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值