帆软报表跨域之插件开发中Controller中定义的方法实现JSONP跨域

在插件开发中,我们自己开发的Controller中的接口有时候需要对外提供,这时就涉及到跨域,常见的跨域有很多,本专栏只介绍JSONP与跨域资源共享(CORS)。

JSONP由于只支持GET方式,所以有一定的局限性。即使设置为POST,发送请求时也会改为POST,另外不能在header中添加自定义属性。

比如我们在插件的Controller中定义了如下方法:

 @RequestMapping(
            value = {"/bg/deleteUserByOrgCodeAndName2"},
            method = {RequestMethod.GET}
    )
    @ResponseBody
    public String deleteUserByNameByJSONP(HttpServletRequest req, HttpServletResponse res, @RequestParam("userName") String userName,@RequestParam("orgCode") String orgCode,@RequestParam(value = "callback",required = false,defaultValue = "callback") String callback) throws Exception {
        FineLoggerFactory.getLogger().info("delete user by jsonp................");
        String X_Access_Token = req.getHeader("X-Access-Token");
        //获取不到,JSONP不支持在header中加入自定义属性
        FineLoggerFactory.getLogger().info("X-Access-Token:"+X_Access_Token);
        FineLoggerFactory.getLogger().info("==== deleteUserByName userName:"+userName);
        FineLoggerFactory.getLogger().info("==== deleteUserByName orgCode:"+orgCode);
        String fineUserName = orgCode + "_" +userName;
        User user = UserService.getInstance().getUserByUserName(fineUserName);
        if(user == null){
             return  (new CrossDomainResponse()).callbackFuncName(callback).parameter("status", "fail").parameter("errorCode", "0001").parameter("errorMsg", "user is not exist").createCrossDomainResponse();
        }
        UserUpdateBean deleteBean = new UserUpdateBean();
        String[] removeIds = new String[1];
        removeIds[0] = user.getId();
        deleteBean.setRemoveUserIds(removeIds);//删除登录用户
        UserService.getInstance().deleteUsers(deleteBean);
        return CrossDomainResponse.create().callbackFuncName(callback).parameter("message", "ok").parameter("status", "success").createCrossDomainResponse();
    }

前端的写法:

function deleteUserByJsonp(){
			var reportUrl = "http://localhost:8075/webroot/decision/bg/deleteUserByOrgCodeAndName2?userName=demo&orgCode=1111&callback=onCallBack1"
			$.ajax({
                type: "GET",
                url: reportUrl,
				dataType: "jsonp",
                jsonp: "jsonpCallback",
            });
		}


	
		function onCallBack1(res){
			console.log("结果:" + res);
		
		}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帆软爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值