解决前后端分离项目中Seesion不能共享问题

本文探讨了在后端项目中使用CrossOrigin注解解决跨域问题的同时,如何配置才能使httpServletRequest对象的getSession方法在跨域环境下正确共享Session。通过设置CrossOrigin的allowCredentials属性为true,并在前端配置xhrFields,实现跨域请求的session共享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

后端项目使用CrossOrigin注解解决跨域的问题,但是再使用httpServletRequest.getSession时session对象不能共享同一个域的”值“

简单的说就是如果你只是单纯的使用了注解CrossOrigin可以解决跨域,但是还是需要进行简单的配置才能使用httpServletRequest对象

  比如后端分离项目中

   httpServletRequest.getSession.setAttribute(user,"111")。你set进去uesr的值为一,但是再下一个请求之后你想要获取该值是获取不到的。

解决方法:后端项目中将CrossOrigin的allowCredentials=”true“,allowedHeaders=”*“ 配置即可。原理就是改变CrossOrigin的默认值。有兴趣的看下查看CrossOrigin注解的源码。

allowCredentials=”true“其实是配置了CrossOrigin中的DEFAULT_ALLOWED_HEADERS熟悉:允许跨域传输所有的header参数,将用于使用token放入header域做session共享的跨域请求。如下图,在方法或者类上面加该注解即可

前端再使用ajax时记得要配置xhrFields属性:意思是将该ajax的请求变为一个允许跨域授信的请求。

前后端配置成功后

大功告成。有不同见解的同学欢迎讨论

更新

最新的CrossOrigin注解以及更改。使用如下

@CrossOrigin(origins = {"*"}, allowCredentials = "true")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值