线下部署可以获取到 request.getQueryString() 得到的值,
而部署到线上的时候,就获取到的是 null,观察线上环境,发现 Connection 为 Connection: close,而访问其它网站页面是 Connection : keep-alive,这是怎么回事?怎么线下到线上就出现这种 bug 啦
相关代码:
@GetMapping("/search")
public BaseResponse<List<User>> searchUsers(@RequestParam Map<String, String> map, HttpServletRequest request) throws IOException, ExecutionException {
String ipAddr = IPUtil.getIpAddr(request);
RateLimiter limiter = userService.getIPLimiter(ipAddr);
Object userObj = request.getSession().getAttribute(USER_LOGIN_STATE);
User role = (User) userObj;
if (role == null) {
throw new BusinessException(ErrorCode.PARAMS_ERROR, "登录已失效!请刷新后重新登录");
}
if (role.getUserRole() == 0 || role.getUserRole() > 4 || role.getUserRole() == null) {
throw new BusinessException(ErrorCode.NO_AUTH);
}
String aa = request.getQueryString();
System.out.println("aa:" + aa);
// aa = http://81.70.51.139/juniorAdmin/basis?current=1&pageSize=5
// aa=http://www.jidianyunguanjia.com/juniorAdmin/epidemic?current=1&pageSize=5
String referer = request.getHeader("referer");
// String aa = referer.substring(referer.lastIndexOf("?") + 1, referer.length());
String[] bb = aa.split("&");
// bb[0] = current=1
// bb[1] = pageSize5
String cc = null;
String[] dd = null;
String key = null;
String value = null;
String str = "%";// %E4%B8%AD%E6%96%87 对中文—>转码
map = new HashMap<String, String>();
for (int i = 0; i < bb.length; i++) {
cc = bb[i];
dd = cc.split("=");
key = dd[0];
if (dd[1] != null) {
value = dd[1];
} else {
value = null;
}
boolean contains = str.contains(value); // true 存在中文乱码
if (!contains) {// false
value = URLDecoder.decode(value, "utf-8");
}
MAP = map;
// 把 pageSize 和 5 放入到 map 中, 以键值对的形式存放
map.put(key, value);
}
System.out.println("cc====" + cc);
System.out.println("====bb======");
for (String s : bb) {
System.out.println("bb:" + s);
}
System.out.println("======dd=======");
for (String s : dd) {
System.out.println("dd:" + s);
}
QueryWrapper<User> queryWrapper = userService.searchUsers(map);
List<User> userList = userService.list(queryWrapper);
List<User> list = userList.stream().map(user -> userService.getSafetyUser(user)).collect(Collectors.toList());
List<User> getList = userService.dataAccess(list, request);
if (getList.size() == 0) {
throw new BusinessException(ErrorCode.PARAMS_ERROR, "您搜索的信息不存在");
}
// if (!HandleReferer.handleReferer(referer)) {
// return null;
// }
List<User> handleList = HandleReferer.handleList(getList);
return ResultUtils.success(handleList);
}
具体遇到什么问题了你可以啊 嗯,不知道,不知道,记事本里边发给我
代码相同的情况下,注意排查配置信息是否相同,应该是配置不同导致的。
服务的运行环境和本地的不一致,这个只能检查相应的环境,另外你的问题描述的不够清除,看不出来具体的问题
如果我没看错的话线上和本地不是同一套代码,输出格式都不一样