分布式微服务项目,同一个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";
    }
相关推荐
Serene_Dream2 小时前
架构基石:深入理解软件开发七大设计原则
架构
yy55276 小时前
LNAMP 网络架构与部署
网络·架构
SMF19198 小时前
【分布式文件存储系统Minio】使用Docker快速搭建 MinIO文件存储服务以及JAVA
分布式
REDcker8 小时前
WebRTC 源码架构深度解析
架构·webrtc
白露与泡影9 小时前
微服务架构下Spring Session与Redis分布式会话实战全解析
spring·微服务·架构
2401_848009729 小时前
rabbitmq的高级知识-ttl与死信队列
分布式·rabbitmq·java-rabbitmq
sbjdhjd9 小时前
RHCE | Web 服务器与 Nginx 全栈详解
linux·nginx·http·云原生·oracle·架构·web
飞飞的AI实验室9 小时前
深度解析:Claude Code 和 OpenClaw 底层架构的设计取舍
架构·ai编程·ai agent·claude code·openclaw
wangjinxun9 小时前
LLM Xinference 安装使用(支持CPU、Metal、CUDA推理和分布式部署)
分布式
百结21410 小时前
LNMP网站架构与部署
架构