springcloud 实战 网关zuul使用中遇到的相关问题
springcloud 实战 网关zuul使用中遇到的相关问题
1.网关zuul使用时,跨域问题
在网关中配置pre过滤器:
1 2 3 4 5 6 | response.setHeader( "Access-Control-Allow-Origin" , request.getHeader( "Origin" )); response.addHeader( "access-control-Allow-Headers" , "*" ); response.addHeader( "Access-Control-Allow-Methods" , "*" ); response.addHeader( "Access-Control-Max-Age" , "3600" ); //预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了 response.addHeader( "Access-Control-Expose-Headers" , "Set-Cookie,REDIRECT,CONTENTPATH" ); //允许访问的头信息 response.addHeader( "Access-Control-Allow-Credentials" , "true" ); //允许Cookie跨域,在做登录校验的时候有用 |
2.网关zuul使用时,session没有传递到微服务,微服务和网关中的sessionId不一致
1> 保证网关中的sessionId 和 后端微服务一致。
1 | zuul.sensitiveHeaders= "*" |
2>session共享时,将用户第一次登陆校验放在网关处理,在网关中将用户新存入session,返回请求,
第二次请求时前端会携带第一次的网关中的sessionID,经过网关,后端微服务。
注意:如果用户session校验逻辑放在网关,而将user写入session的逻辑放在后端微服务,则第一次请求后,返回到web前端会存在两个sessionId, 一个是网关中生成的,一个是微服务中生成的,导致第二次请求会取出最后一个sessionId(微服务中生成的),
而该sesssionId在网关中是无法取出用户信息的,仍然提示用户未登录,该场景,需要先通过一次其他请求(比如隐藏一个不校验的图片地址请求)消耗掉第一次请求的sessionId不一致的问题。
建议直接将用户session的写入和校验都放到网关中进行处理。
3.网关zuul使用时,请求超时
1 2 3 4 | ribbon.ReadTimeout= 60000 ribbon.ConnectTimeout= 60000 zuul.host.connect-timeout-millis= 30000 zuul.host.socket-timeout-millis= 30000 |
分类:
Spring Cloud
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 聊一聊 操作系统蓝屏 c0000102 的故障分析
· SQL Server 内存占用高分析
· DeepSeek V3 两周使用总结
· 回顾我的软件开发经历(1)
· C#使用yield关键字提升迭代性能与效率
· 低成本高可用方案!Linux系统下SQL Server数据库镜像配置全流程详解
· 4. 使用sql查询excel内容