微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Boot Rest 控制器 POST 请求总是使用@SessionScope 创建新的 sessionid?

如何解决Spring Boot Rest 控制器 POST 请求总是使用@SessionScope 创建新的 sessionid?

搜索了很多,没有找到合适的答案。

我有 2 个 post 控制器方法

@PostMapping("/saveStudentInfo")
public String saveStudentInfo(@RequestBody Students stud,HttpServletRequest request) {
    students.setId(stud.getId());
    students.setStudentName(stud.getStudentName());
    students.setSchoolInfo(stud.getSchoolInfo());
    
    System.out.println("Hello A= "+request.getSession(false).getId());
    
    return "Saved Sucessfully";
}
    
@PostMapping("/saveSubjectInfo")
public String saveSubjectInfo(@RequestBody Subjects sub,HttpServletRequest request) {
    subject.setSubjectName(sub.getSubjectName());
    subject.setSubjectTeacher(sub.getSubjectTeacher());
    System.out.println("Hello B= "+request.getSession(false).getId());
    
    return "Saved Sucessfully Subject";
}

现在来自邮递员这些调用,工作成功,因为生成了相同的 JSessionId

==>问题

当第二次通过浏览器从 React 应用程序调用

saveSubjectInfo 请求我得到不同的 JSessionId,就像在创建新会话

enter image description here

我已经将学生和主题注释为@SessionScoped。

==>要求

需要维护会话,因此 JSessionId 需要相同。

解决方法

默认情况下,当直接从浏览器 URL 栏中点击 API 时,浏览器支持 GET 方法。此外,POST 和 PUT 方法通常应该将请求与一些数据一起作为主体发送到服务方法,这样它就不会在浏览器请求中被查看。可以使用 POST 或 PUT Postman 应用程序。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。