分布式微服务项目,同一个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";
    }
相关推荐
刺客_Andy26 分钟前
React 第五十二节 Router中 useResolvedPath使用详解和注意事项示例
前端·react.js·架构
labview_自动化1 小时前
RabbitMQ
分布式·rabbitmq·labview
推理幻觉2 小时前
IDE/编码代理架构与 Cursor 相关研究(汇总)
ide·人工智能·架构·agent
歪歪1002 小时前
详细介绍一下“集中同步+分布式入库”方案的具体实现步骤
开发语言·前端·分布式·后端·信息可视化
C++chaofan3 小时前
MyBatis - Plus学习笔记
java·spring boot·笔记·后端·mysql·架构·mybatis
猫林老师3 小时前
Flutter for HarmonyOS开发指南(二):混合开发架构与通信机制
flutter·架构·harmonyos
JavaArchJourney3 小时前
数据库分库分表
数据库·分布式
熙客4 小时前
Kafka:专注高吞吐与实时流处理的分布式消息队列
分布式·中间件·kafka
绝无仅有6 小时前
大厂面试相关文章:深入技术面试中的核心知识点
后端·面试·架构
绝无仅有6 小时前
面试文章:网络协议与redis安全,https协议,TCP三次握手,四次挥手等面试经典问题
后端·面试·架构