当前位置: 首页 > article >正文

分布式微服务项目,同一个controller不同方法间的转发导致cookie丢失,报错null pointer异常

源码:

/**
 *添加商品进入购物车
 */
@GetMapping("/addToCart")
public String addToCart(@RequestParam("num") Integer num, @RequestParam("skuId") Long skuId, RedirectAttributes redirectAttributes) {
    System.out.println("num=" + num+",skuId="+skuId);
    CartItemVo cartItemVo = cartService.addToCart(num,skuId);
    redirectAttributes.addAttribute("skuId",skuId);
    redirectAttributes.addAttribute("num", num);
    return "redirect:/addToCartSuccess.html";
}

@GetMapping("/addToCartSuccess.html")
public String addToCartPage(@RequestParam("num") Integer num, @RequestParam("skuId") Long skuId, Model model) {
    CartItemVo cartItemVo =  cartService.getCartItem(skuId);
    cartItemVo.setCount(num);
    model.addAttribute("item",cartItemVo);
    return "success";
}

错误原因:

本服务为购物车服务,域名为cart.jxxdymall.com,由于第一个请求来自另一个域名为item.jxxdymall.com的服务,而cookie的作用域被我设置为了jxxdymall.com,在方法间进行转发的时候,转发之前的路径是http://item.jxxdymall.com/4.html,转发之后变为http://192.168.56.1:15002/addToCartSuccess.html?skuId=4&num=1,导致了cookie丢失

解决办法:

重定向时使用完整路径

        /**
     *添加商品进入购物车
     */
    @GetMapping("/addToCart")
    public String addToCart(@RequestParam("num") Integer num, @RequestParam("skuId") Long skuId, RedirectAttributes redirectAttributes) {
        System.out.println("num=" + num+",skuId="+skuId);
        CartItemVo cartItemVo = cartService.addToCart(num,skuId);
        redirectAttributes.addAttribute("skuId",skuId);
        redirectAttributes.addAttribute("num", num);
        return "redirect:http://cart.jxxdymall.com/addToCartSuccess.html";
    }


http://www.kler.cn/a/397611.html

相关文章:

  • STM32设计防丢防摔智能行李箱
  • 常见的测试方法
  • 【Pip】如何清理 `pip` 包管理器 —— 完整指南
  • AtCoder Beginner Contest 380(A-F)
  • Springboot集成ElasticSearch实现minio文件内容全文检索
  • Day44 | 动态规划 :状态机DP 买卖股票的最佳时机IV买卖股票的最佳时机III
  • 122、java的LambdaQueryWapper的条件拼接实现数据sql中and (column1 =1 or column1 is null)
  • 向潜在安全信息和事件管理 SIEM 提供商提出的六个问题
  • 深入解析 Linux 文件权限
  • MFC 鼠标悬停在控件上,显示提示信息
  • TCP(下):三次握手四次挥手 动态控制
  • Docker compose部署Activemq
  • PostgreSQL物化视图详解
  • 什么是PostgreSQL,有什么特点
  • 【数据库】组合索引生效规则及索引失效
  • 3D电子商务是什么?如何利用3D技术提升销售转化?
  • 计算机网络WebSocket——针对实习面试
  • 介绍一下struct(c基础)
  • 【Pip】如何清理 `pip` 包管理器 —— 完整指南
  • Python 小高考篇(2)字符串
  • Springboot整合Prometheus+grafana实现系统监控
  • linux进程、文件常见命令
  • 网络层7——外部网关协议BGP
  • 数据结构《链表》
  • 基于Java Web 的家乡特色菜推荐系统
  • Redis性能优化——针对实习面试