解决Springboot+ajax跨域及每次请求sessionId不一样的问题

本文介绍了在Springboot项目中,遇到Ajax请求跨域和每次请求sessionId不同的问题。首先,通过设置响应头解决了跨域问题。然后,针对sessionId变化,排查后发现是跨域配置不完整导致。提供了三种后端解决方案,包括Springboot内置的跨域配置、自定义拦截器以及传统SSM框架的拦截器配置,以确保sessionId在跨域请求中保持一致。
摘要由CSDN通过智能技术生成

1、问题复现:

项目中后端使用Springboot搭建,使用Shiro做安全管理。前后端分离后,前端使用ajax访问服务端程序。在未做任何处理前,ajax报错:

Access to XMLHttpRequest at 'http://127.0.0.1:8080/login/checkLogin' from origin 
'http://localhost:63342' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' 
header is present on the requested resource.

明显是跨域问题引起的浏览器无法正常接收服务端的响应。服务端对响应头信息做出统一拦截修改后,跨域问题解决。但shiro的授权管理

Subject currentUser = SecurityUtils.getSubject();
currentUser.isAuthenticated(); // 每次请求,都是返回false

isAuthenticated()每次请求都返回false

排除半天,发现每次请求的sessionId均不一样。想还是ajax的跨域问题没有完全解决。进一步解决后,记录如下:

  • 问 题 1 : a j a x 跨 域 问 题 \color{#FF3030}{问题1:ajax跨域问题} 1ajax
  • 问 题 2 : a j a x 每 次 访 问 后 端 , s e s s i o n I d 均 不 同 \color{#FF3030}{问题2:ajax每次访问后端,sessionId均不同} 2ajax
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值