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

后端项目使用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的请求变为一个允许跨域授信的请求。

解决前后端分离项目中Seesion不能共享问题_第1张图片

前后端配置成功后

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

更新

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

@CrossOrigin(origins = {"*"}, allowCredentials = "true")

你可能感兴趣的:(前后端分离,session跨域共享,ajax,java,CrossOrigin)