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

devtools/2024/11/17 14:57:12/

源码:

/***添加商品进入购物车*/
@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.ppmy.cn/devtools/134720.html

相关文章

React 中 为什么多个 JSX 标签需要被一个父元素包裹?

为什么多个 JSX 标签需要被一个父元素包裹? JSX 虽然看起来很像 HTML,但在底层其实被转化为了 JavaScript 对象,你不能在一个函数中返回多个对象,除非用一个数组把他们包装起来。这就是为什么多个 JSX 标签必须要用一个父元素或者…

15-1.Java 网络编程之 InetAddress(InetAddress 常用静态方法、InetAddress 常用方法)

InetAddress 概述 InetAddress 用于表示一个 IP 地址(IPv4 / IPv6) InetAddress 提供了获取主机名、获取 IP 地址等一系列方法 其中 Inet 是 Internet 的缩写,代表因特网 一、InetAddress 常用静态方法 1、基本介绍 方法说明InetAddress…

【python】掌握 Flask:轻量级 Web 开发框架解析

【Python】掌握 Flask:轻量级 Web 开发框架解析 引言 Flask 是一个轻量级、灵活且广受欢迎的 Python Web 开发框架。它以其简单易用、模块化和强大的扩展功能而闻名,适合用于小型应用和快速原型设计。同时,Flask 提供了一系列工具和库&…

验证双随机矩阵(doubly stochastic matrix) 满足C(P)=C(P^T)

验证双随机矩阵(doubly stochastic matrix) 满足C( P P P)C(P T ^T T) 双随机矩阵: 在数学中,一个双随机矩阵(doubly stochastic matrix)是一个满足以下条件的矩阵: 非负矩阵:矩阵中的每个元素都是非负的…

spark 设置hive.exec.max.dynamic.partition不生效

spark脚本和程序中设置ive.exec.max.dynamic.partition不生效 正确写法: spark-submit \ --master yarn \ --deploy-mode client \ --driver-memory 1G \ --executor-memory 12G \ --num-executors 8 \ --executor-cores 4 \--conf spark.hadoop.hive.exec.max.dyna…

高鑫零售实现扭亏为盈,逆市增长的高鑫零售未来何在?

大润发母公司高鑫零售发布截至9月30日的2025财年中期业绩报告:营收347.08亿元人民币,税后溢利1.86亿元,同比增加5.64亿元,实现扭亏为盈,高鑫零售的成绩单我们该如何分析? 首先,整体来看&#x…

生成自签名证书并配置 HTTPS 使用自签名证书

生成自签名证书 1. 运行 OpenSSL 命令生成证书和私钥 在终端中输入以下命令,生成自签名证书和私钥文件: sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout self_signed.key -out self_signed.pem-x509:生成自签名证书。…

从零开始学习 sg200x 多核开发之 eth0 MAC 地址修改

在 sophpi 中,默认网卡 eth0 的 MAC 地址未配置,是随机生成的。这样就会导致每次重启之后,MAC 地址会改变,从而导致通过 DHCP 获取 IP 地址每次也都在变化。 查看 MAC 地址 前文提到 eth0 自动使能并通过 DHCP 获取 IP 地址&…