解决前后端分离某视频剪辑软件跳羚跨域会话甜饼干失效问题
环境:
前端vue ip地址:192.168.1.205
后端回弹2.0 ip地址:192.168.1.217
主要开发后端。
问题:
首先登陆成功时将用户存在会议中,后续请求在将用户从会议中取出检查。后续请求取出的用户都为零。
解决过程:
首先发现便会失效不一致,导致每一次都是新的会话,当然不可能存在用户了。然后发现甜饼干浏览器不能自动保存,服务器响应字段了
搜索问题,发现跨域,服务器响应的setCookie浏览器无法保存,而且就算保存了域名不同也不能携带。
第一步:
后台添加过滤器,因为前后端分离,不可能每个方法都写一遍,所以添加过滤器统一处理。
打包。测试。过滤器;导入javax。servlet。*;导入javax。servlet。注释。WebFilter导入javax。servlet。http。HttpServletrequest导入javax。servlet。http。HttpServletResponse导入Java。io。ioexception@WebFilter(urlPatterns='/*,filterName='CORSFilter ')公共类CORSFilter实现筛选器{ @ Override public void destroy(){ }/* * *此过滤器只是处理跨域问题* @ param servlet请求* @ param servlet响应* @ param chain * @抛出ServletException * @抛出IOException */@ Override public void doFilter(servlet请求servlet请求,ServletResponse servletResponse,FilterChain)抛出ServletException,IOException { httperserverequest req=(httperserverequest)servlet请求;httpersvletresponse resp=(httpersvletresponse)servlet响应;字符串原点=req.getHeader('原点');if(origin==null){ origin=req。get header(' Referer ');} resp.setHeader('访问控制-允许-起源,起源);//这里不能写*,*代表接受所有域名访问,如写*则下面一行代码无效。谨记resp.setHeader('访问控制-允许-凭证,' true ');//真代表允许携带饼干链。dofilter(servlet请求,servlet响应);} @覆盖公共void init(过滤器配置过滤器配置)引发ServletException { } }回弹2。配置过滤器时,启动类必须加上@ServletComponentScan才会加载过滤器
@回弹应用@ EnableTransactionManagement(order=10)@ ServletComponentScanpublic类应用程序{公共静态void main(String[]args){ spring application。运行(应用程序。类,args);}}然后前端配置
使用vue。资源库发送请求时配置如下:main.js中vue。http。选项。xhr={ withcredentials : true }使用vue.axios发送请求时配置如下:axios。默认值。带有凭据=真;框架请求带上xhrfields : {凭据为: true },crossDomain: true$。ajax({ type: 'post ',url: ' ',xhrfields : {带有凭据: true },crossDomain: true,数据: { username : $(' # username ')).val()},数据类型:“JSON”,成功:函数(数据){ } });此时问题已解决。
但我查看请求时,还是没有带饼干,太纠结于这一点了。以至于查看全部甜饼干时突然明白了。
没有带饼干。
浏览器全部甜饼干
已经有服务器的甜饼干了。当向服务器发送请求时,会携带饼干,证明是同一会话。
发现火狐的请求头中存在饼干,不知道为什么谷歌的请求头不显示,不明白。望解答。
总结
以上所述是小编给大家介绍的解决前后端分离某视频剪辑软件跳羚跨域会话甜饼干失效问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
版权声明:解决前后端分离某视频剪辑软件跳羚跨域会话甜饼干失效问题是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。