您的位置:软件测试 > 开源软件测试 > 开源软件测试解决方案 >
跨域访问的解决方案
作者:网络转载 发布时间:[ 2013/12/12 9:23:24 ] 推荐标签:

然后我们把这个servlet映射到某个url上,见web.xml:

    <servlet>
        <description>This servlet will create a jsonp object,it wraps the js function and the json object</description>
        <display-name>JSONPServlet</display-name>
        <servlet-name>JSONPServlet</servlet-name>
        <servlet-class>com.charles.jsonp.JSONPServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>JSONPServlet</servlet-name>
        <url-pattern>/JSONPServlet</url-pattern>
      </servlet-mapping>

现在我们测试服务器端是否已经正确部署:

我们打开浏览器,输入访问服务器端这个servlet的url,注意带上请求参数,参数名为callbackFunc,参数值为任意函数名:则我们可以看到封装后的JSONP效果,的确是“函数名(json对象)”的字符串形式。比如我们例子中,我们传入的函数名是 someFunc ,而服务器端自身提供的json对象是{"title":"technical lead","name":"charles","info":"talent man"},则后服务器端返回的JSONP 字符串是someFunc{json}

客户端:

服务器端部署正确后,我们让客户端部署在另外一个域:http://localhost:8180上,要实现跨域访问,客户端必须有2部分,1是定义一个回调函数(这个函数用于将来处理服务器json数据),二是一个页面,这个页面要用<script src来指向服务器端能 提供JSONP的url),我们一步步来:

先定义一个回调函数:

这个回调函数能在控制台和alert窗口打印出服务器端的json对象提供的信息

    //这段代码用于定义回调函数
    function clientMethodWhichOperateServerResource(result){
        
        console.log("Begin to execute the call function named clientMethodWhichOperateServerResource(result)");
        
        //获取服务器端传递过来的json字符串,转为json对象
        var jsonObject=result;
        //从json对象中分离出一些相关信息
        var name=jsonObject.name;
        var title=jsonObject.title;
        var info=jsonObject.info;
        console.log("name: "+name);
        console.log("title: "+title);
        console.log("info: "+info);
        
    
        var serverInfoString="姓名: "+name+",";
        serverInfoString+="头衔: "+title+",";
        serverInfoString+="信息: "+info;
        alert(serverInfoString);
    
    }

上一页123下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd