如何跨域直接访问Axis2服务接口

如何跨域直接访问Axis2服务接口

昨天遇到一个跨域直接访问Axis2服务接口的问题,以前一直是直接java后台解析,然后将结果返回给前台,于是昨天就试着处理了一下这个问题,不过还好成功了


Axis2服务可以通过解析直接访问,但是有时候我们需要通过ajax来直接获得服务的数据,这里就存在着一个跨域问题

通常会报如下的错误提示:

Access-Control-Allow-Origin

这种问题,如果是针对普通Spring的controller(如果您会Spring框架,应该知道),返回一个json,那么也是很好解决

只需要添加一个相应头即可,如下面类似的代码

response.setHeader("Access-Control-Allow-Origin", "*");

但是对于使用Axis2发布的服务接口,如果你想直接在前端使用跨域来请求接口地址,获得数据,也是需要设置一个响应头的,具体的做法如下

1,创建一个Filter,其主要作用就是向客户端发送一个允许所有人访问的相应头:Access-Control-Allow-Origin

public class MyFilter implements Filter{

    @Override
    public void destroy() {
    	// TODO Auto-generated method stub
    }

    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {
	HttpServletResponse httpResponse = (HttpServletResponse) arg1;
        httpResponse.addHeader("Access-Control-Allow-Origin", "*");
        arg2.doFilter(arg0, arg1);
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
	// TODO Auto-generated method stub
    }
}

2,在我们的web.xml中添加如下代码

    MyFilter    MyFilter    MyFilter    /services/*

3,在客户端使用如下的ajax代码进行请求即可

$.ajax({
    type: "get",
    contentType:"application/x-www-form-urlencoded;charset=UTF8",
    dataType:'xml',
    url:'http://192.168.0.101:8080/eqUseStatus-portlet/services/Axis2ServiceImpl/Axis2Start?screenname=test&sycode=SY2017040255454&iden=uK1sX4DCQx2WvglpDVuuQw==',
    success:function(data){
        console.log(data);
	alert(data);
    },
    error:function(data){
        alert(111);
    }
})

通过上面的代码就可以拿到数据可。

另外,下面两张图片展示了通过上面的配置后,某网站首页和services目录(上面url-pattern配置的路径)的相应头信息

相应头没有Access-Control-Allow-Origin

222.png

相应头有Access-Control-Allow-Origin

111.png


通常,Axis2发布的是一个服务,提供的是如下地址,我们需要解析如下地址,以得到该服务具体有那些方法,方法的传入参数和返回结果

http://XXX.XXX.XXX.XXX/eqUseStatus-portlet/services/Axis2ServiceImpl?wsdl

我们也可以通过上面ajax里面写的那样直接调用接口

http://192.168.0.101:8080/eqUseStatus-portlet/services/Axis2ServiceImpl/Axis2Start?screenname=test&sycode=SY2017040255454&iden=uK1sX4DCQx2WvglpDVuuQw==



爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img