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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

shell bash---类似数组类型

0 Preface/Foreword C/C,Python,Java等编程语言,都含有数组类型,那么shell脚本是不是也有类似的语法呢? 1 类似数组类型 1.1 ()类似数组类型 #! /bin/bashecho "Welcome to bash world!" anim…

【论文分享】基于街景图像识别和深度学习的针对不同移动能力老年人的街道步行可达性研究——以南京成贤街社区为例

全球老龄化趋势加剧, 许多城市中老年人数量不断增加,而现有街道和社区基础设施往往未能满足其步行安全和便利需求。本次我们给大家带来一篇SCI论文的全文翻译,该论文通过探讨不同步行能力的老年人对城市步行环境的需求,提供了关于如何改善城市…

Figma汉化:提升设计效率,降低沟通成本

在UI设计领域,Figma因其强大的功能而广受欢迎,但全英文界面对于国内设计师来说是一个不小的挑战。幸运的是,通过Figma汉化插件,我们可以克服语言障碍。以下是两种获取和安装Figma汉化插件的方法,旨在帮助国内的UI设计师…

Docker:查看镜像里的文件

目录 背景步骤1、下载所需要的docker镜像2、创建并运行临时容器3、停止并删除临时容器 背景 在开发过程中,为了更好的理解和开发程序,有时需要确认镜像里的文件是否符合预期,这时就需要查看镜像内容 步骤 1、下载所需要的docker镜像 可以使…

『VUE』27. 透传属性与inheritAttrs(详细图文注释)

目录 什么是透传属性(Forwarding Attributes)使用条件唯一根节点禁用透传属性继承总结 欢迎关注 『VUE』 专栏,持续更新中 欢迎关注 『VUE』 专栏,持续更新中 什么是透传属性(Forwarding Attributes) 在 V…

Linux内存与磁盘管理

内存查看命令 内存查看命令free、top top写过了,在进程管理里free命令 free命令用于显示系统内存的使用情况,包括物理内存、交换空间和内核缓冲区的信息。通过free命令可以快速了解系统当前的内存使用情况,有助于监控系统性能和调优。 基本…

19-8 ACC自适应巡航控制系统输入输出接口设计

ACC系统输出接口 ACC_EngTrgReq ACC 发动机扭矩需求 ACC ModSts ACC 模式 OFF Failure Brake Only Stand-by Disenabled Stand-by Enabled Active –Control Override Standstil ACC_EngTrgReqActive ACC纵向控制功能发动机扭矩请求激活 Not Active Active ACC_DecelToStopReq …

SpringCloud核心组件(五)

文章目录 Gateway一. 概述简介1. Gateway 是什么2. 什么是网关?3.Gateway 和 Nginx 两个网关的区别什么是流量入口? 4.Gateway 能干嘛5.gateway 三大核心概念6.运行方式 二. 入门案例a.创建gateway模块,在pom.xml中引入依赖b.创建启动类GatewayApplicat…

【JavaScript】LeetCode:96-100

文章目录 96 单词拆分97 最长递增子序列98 乘积最大子数组99 分割等和子集100 最长有效括号 96 单词拆分 动态规划完全背包:背包-字符串s,物品-wordDict中的单词,可使用多次。问题转换:s能否被wordDict中的单词组成。dp[i]&#x…

maven的optional选项说明以及具体应用

写在前面 本文看下maven的optional选项的作用和用法。 1:什么作用 考虑这样的场景,A依赖B,B依赖C,正常的按照依赖的传递性,A也会间接的依赖C,但是在一些特定的场景中项目A只希望依赖B,而不依…

124. 二叉树中的最大路径和【 力扣(LeetCode) 】

文章目录 零、原题链接一、题目描述二、测试用例三、解题思路四、参考代码 零、原题链接 124. 二叉树中的最大路径和 一、题目描述 二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径…

【强弱分界】,股市动态多维波动 精准辅助工具 源码

该策略结合了多重技术指标,旨在通过高低点的动态波动分析,提供精准的买入、卖出信号及市场强弱判断。 本策略适用于: 中短期股市交易者,帮助判断市场的进出场时机。 高频交易和量化交易系统中的信号生成模块。 在波动较大的市场…

【IEEE出版 | 中国石油大学(华东)主办】第六届信息与计算机前沿术国际学术会议(ICFTIC 2024,12月13-15日)

第六届信息与计算机前沿术国际学术会议(ICFTIC 2024) 2024 6th International Conference on Frontier Technologies of Information and Computer 官方信息 会议官网:WWW.ICFTIC.ORG 2024 6th International Conference on Frontier Technologies of Information…

如何在SM30生成的维护表中增加选择框 CheckBox

用户想要在屏幕中显示选择框进行维护,如下图: 很简单,先通过 SE11 定义一个 CHAR1 类型的字段名,然后通过使用程序转到表维护生成器 进入到概述屏幕,双击,然后进入到屏幕布局: 先删除原来通过系…

极客争锋 智连未来 TuyaOpen Framework极客创意大赛正式开启

TuyaOpen Framework极客创意大赛正式开启 可选择基于: TuyaOpen Framework 原生开源包: https://github.com/tuya/tuyaopen 支持 Ubuntu/T2/T3/T5/ESP32/ESP32C3等多款芯片TuyaOpen Arduino:https://github.com/tuya/arduino-tuyaopen支持 T2/T3/T5等多款芯片TuyaOpen LuaNode…

麒麟kysec安全

一、kysec安全框架管理 开启kysec getstatus Copy security-switch --set default Copy 重启系统 reboot Copy 刷新页面,等待几分钟,即可完成文件的扫描。 查看kysec状态 getstatus Copy 切换到管理员身份(密码:devuser…

c++ 左值、右值、左值引用()、右值引用(),移动构造和std::move

左值和右值 不是等于号的左边和右边 !!(一部分场景下是这样) 右值可以描述成一个临时值 c 左值、右值、左值引用、右值引用&& 左值右值左值引用右值引用结论 第二弹~ 你可以完全不看上面的解释移动语义移动构造和move 左…

黑马嵌入式开发入门模电基础学习笔记

学习视频: 黑马程序员嵌入式开发入门模电(模拟电路)基础 文章目录 背景介绍电流电压组件仿真三极管ne555PCBEDA案例:非接触式电笔案例:电子琴 背景介绍 电流 电压 组件 仿真 三极管 mos管 ne555 PCB EDA 案例:非接触…

Tomcat启动过程中cmd窗口(控制台)中文乱码的问题

目录 一、问题产生 二、问题分析 三、解决方法(2种) 一、问题产生 在服务器上使用新的Tomcat9(绿色版ZIP),打开一个cmd窗口后,将路径定位到“tomcat\bin\”目录,运行“startup.bat”。程序会自动打开一个新窗口,这个是Java程序的运行窗口,但是里面的中文全是乱码,如…

Neo4j Desktop 和 Neo4j Community Edition 区别

Neo4j Desktop 和 Neo4j Community Edition 的主要区别在于它们的用途、功能以及安装和管理方式。以下是这两者的详细对比: 1. Neo4j Desktop Neo4j Desktop 是一个图形化的桌面应用程序,主要为开发人员和个人使用提供了一个便捷的环境来安装、管理和运…