分布式微服务项目,同一个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";
    }
相关推荐
zhixingheyi_tian11 分钟前
Spark 之 SparkSessionExtensions
大数据·分布式·spark
ProtonBase11 分钟前
分布式 Data Warebase - 构筑 AI 时代数据基石
大数据·数据库·数据仓库·人工智能·分布式·数据分析·数据库系统
凡人的AI工具箱39 分钟前
40分钟学 Go 语言高并发:Select多路复用
开发语言·后端·架构·golang
天冬忘忧2 小时前
Kafka 分区分配及再平衡策略深度解析与消费者事务和数据积压的简单介绍
分布式·kafka
007php0072 小时前
家庭智慧工程师:如何通过科技提升家居生活质量
数据库·python·云原生·架构·golang·php·postman
出发行进4 小时前
Flink的Standalone集群模式安装部署
大数据·linux·分布式·数据分析·flink
数字扫地僧4 小时前
如何使用MySQL实现多租户架构:设计与实现全解析
数据库·mysql·架构
zhengyquan4 小时前
华为HCCDA云技术认证--分布式云架构
分布式·华为·架构·华为云·云计算·华为认证
乄bluefox4 小时前
SpringBoot中使用Sharding-JDBC实战(实战+版本兼容+Bug解决)
java·数据库·spring boot·redis·后端·缓存·bug
潜洋5 小时前
Spring Boot 教程之六:Spring Boot - 架构
java·spring boot·后端·架构