首先可以肯定的是这个问题的原因就是跨域的问题。
本地的请求服务器、或者请求局域网内的其他服务器都不行,没办法开发调试
跨域的一些配置全都配置了,还是不能获取到登录用户的信息。
跨域的时候无法传递Cookies,所以sessionid每次都不一样。
网上说的设置Origin为同源什么的,试过了都不好使。
通过查资料得知
DefaultCookieSerializer 中 sameSite值默认为Lax
通过百度得知:
SameSite-cookies是一种机制,用于定义cookie如何跨域发送。这是谷歌开发的一种安全机制,并且现在在最新版本(Chrome Dev 51.0.2704.4)中已经开始实行了。SameSite-cookies的目的是尝试阻止CSRF(Cross-site request forgery 跨站请求伪造)以及XSSI(Cross Site Script Inclusion (XSSI) 跨站脚本包含)攻击。
Strict
Strict是最严格的防护,有能力阻止所有CSRF攻击。然而,它的用户友好性太差,因为它可能会将所有GET请求进行CSRF防护处理
Lax
属性只会在使用危险HTTP方法发送跨域cookie的时候进行阻止,例如POST方式
所以,把sameSite设置为null,就可以了。
添加一个配置类:
@Configuration
public class SpringSessionConfig {
public SpringSessionConfig() {
}
@Bean
public CookieSerializer httpSessionIdResolver() {
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
// 取消仅限同一站点设置
cookieSerializer.setSameSite(null);
return cookieSerializer;
}
}
参考了:
https://www.cnblogs.com/hujinshui/p/11025848.html
https://segmentfault.com/a/1190000017175342?utm_source=tag-newest
https://segmentfault.com/a/1190000017824101
非常感谢大佬的分享 感谢感谢感谢感谢感谢