zoukankan      html  css  js  c++  java
  • 前端快速连续请求, 导致后台获取request错乱, 无法获取到header, 已解决

    原文链接:https://www.cnblogs.com/zizaiwuyou/p/13936567.html

    前几天我遇到一个问题, 在后端获取header内参数的一个方法出现了偶发的bug, 获取不到值

    之前是在controller父类中有一个保存request的方法, 如下

        @ModelAttribute
        public void setRequest(HttpServletRequest request) {
            this.request = request;
        }

    然后在获取时直接

        protected Integer getTeamId() {
            String teamIdStr = request.getHeader("teamId");
            //如果header中不存在teamId,则从参数中获取teamId
            if(StringUtils.isBlank(teamIdStr)){
                teamIdStr = request.getParameter("teamId");
            }
            return decryptTeamId(teamIdStr);
        }

    这样获取会偶尔获取不到

    解决方法:

    后来改了一下获取方式, 使用如下的方式获取request就好了

        protected Integer getTeamId() {
            ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
            HttpServletRequest request = attributes.getRequest();
            String teamIdStr = request.getHeader("teamId");
            //如果header中不存在teamId,则从参数中获取teamId
            if(StringUtils.isBlank(teamIdStr)){
                teamIdStr = request.getParameter("teamId");
            }
            return decryptTeamId(teamIdStr);
        }

    主要是这两句

    ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
    HttpServletRequest request = attributes.getRequest();

  • 相关阅读:
    队列01--[队列&双端队列&循环队列&双端循环队列]
    LeetCode--[栈]--不定时更新
    栈01--[栈接口设计&&栈应用]
    初等数论初步
    成外国庆集训小记
    图论算法初步
    Are Lights Still On?
    二分答案和三分入门
    SCOI2010 传送带
    微信小程序 菜鸟笔记
  • 原文地址:https://www.cnblogs.com/zizaiwuyou/p/13936567.html
Copyright © 2011-2022 走看看