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

分布式微服务项目,同一个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.lryc.cn/news/485907.html

相关文章:

  • STM32 ADC --- 任意单通道采样
  • vscode中执行git合并操作需要输入合并commit信息,打开的nano小型文本编辑器说明-
  • 蓝桥杯每日真题 - 第7天
  • 【Git】Git Clone 指定自定义文件夹名称:详尽指南
  • 终端快捷键学习笔记
  • Go语言24小时极速学习教程(四)MySQL数据库的增删改查
  • 04 - Clickhouse-21.7.3.14-2单机版安装
  • 多项式回归
  • vscode报错:Connecting with SSH time-out.
  • python可视化将多张图整合到一起(画布)
  • C函数如何返回参数lua使用
  • pytest在conftest.py中实现用例执行失败进行截图并附到allure测试报告
  • 编程之路,从0开始:数据在内存中的存储
  • 二叉树+树的OJ题讲解
  • 信捷PLC转以太网连接电脑方法
  • 释放 PWA 的力量:2024 年的现代Web应用|React + TypeScript 示例
  • CVSS4与CVSS3的不同之二
  • 【Pip】如何清理 `pip` 包管理器 —— 完整指南
  • 操作数据库
  • lua-lru缓存算法解析
  • Python - 初识Python;Python解释器下载安装;Python IDE(一)
  • 鸿蒙学习基本概念
  • 正则表达式(补充)
  • 第23课-C++-红黑树的插入与旋转
  • 【C#】C#编程入门指南:构建你的.NET开发基础
  • [系统安全] PE文件知识在免杀中的应用
  • 相机标定原理
  • Linux基础开发工具使用
  • 蓝牙PBAP协议及Android实现
  • Py之pymupdf:基于langchain框架结合pymupdf库实现输出每个PDF页面的文本内容、元数据等