CDN导致GET请求始终无法获取参数

编程语言,Java

2017-09-26

128

0

目录


问题

接口如下:
 
@ResponseBody
    @RequestMapping(value = "/getInfo.remote")
    @AccessPolicy(value = AccessLevel.PUBLIC, userLevel = UserLevel.NORMALUSER)
    public Map getWeChatAdPar(HttpServletRequest request, HttpServletResponse response) {
        try {
            request.setCharacterEncoding("utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        /**
         * 拿到请求中的参数(接收到的参数如下)
         */
        String muid = request.getParameter("muid");//由IMEI(Android应用)md5生成,或是由IDFA(iOS应用)md5生成
        log.info("muid============="+muid);
        String click_time = request.getParameter("click_time");//由广点通系统生成,取值为标准时间戳,秒级别
        log.info("click_time==============="+click_time);
        String clickid = request.getParameter("click_id");//广点通系统中标识用户每次点击生成的唯一标识
        log.info("clickid============"+clickid);
        String appid = request.getParameter("appid");//Android应用为应用宝移动应用的id,或者iOS应用在Apple App Store的id
        log.info("appid==============="+appid);
        String advertiser_id = request.getParameter("advertiser_id");//广告主在广点通(e.qq.com)的账户id
        log.info("advertiser_id=========="+advertiser_id);
        String app_type = request.getParameter("app_type");//取值为 android或ios
        log.info("app_type=========="+app_type);
        /**
         * 参数封装进对象,并保存到数据库
         */
        WidePointAdVo widePointAdVo = new WidePointAdVo();
        widePointAdVo.setMuid(muid);
        widePointAdVo.setClick_time(click_time);
        widePointAdVo.setClickid(clickid);
        widePointAdVo.setAppid(appid);
        widePointAdVo.setAdvertiser_id(advertiser_id);
        widePointAdVo.setApp_type(app_type);
        widePointService.saveWidePointInfo(widePointAdVo);
        /**
         * 返回成功的状态码
         */
        HashMap<String,Object> resultCode = new HashMap<String,Object>();
        resultCode.put("ret",0);
        resultCode.put("msg","请求成功");
        return  resultCode;
    }
按IP地址请求接口,GET和POST都能正常获取参数
如果按域名请求接口,GET请求无法获取参数,打印出来均为null,而POST请求可以正常获取参数。
 

原因

如下图:
阿里云CDN有一个性能优化策略,回源时会去除 URL 中?之后的参数,有效提高文件缓存命中率,提升分发效率,而服务器设置该项开启,所以……
 

总结

在开启CDN和设置CDN各项功能前,请务必认真阅读说明,否则,就可能产生如上的很难定位的问题。


前一篇: Elasticsearch搜索服务学习之十二——数据建模(五)——嵌套关系和父子关系结合建模示例
后一篇:WEBP格式的图片导致ImageIO.read方法return null

belonk

轻轻地我走了,正如我轻轻地来,我挥一挥衣袖,不带走一片云彩