springcloud 实战 网关zuul使用中遇到的相关问题
2024-09-27 05:40:29
springcloud 实战 网关zuul使用中遇到的相关问题
1.网关zuul使用时,跨域问题
在网关中配置pre过滤器:
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 和 后端微服务一致。
zuul.sensitiveHeaders="*"
2>session共享时,将用户第一次登陆校验放在网关处理,在网关中将用户新存入session,返回请求,
第二次请求时前端会携带第一次的网关中的sessionID,经过网关,后端微服务。
注意:如果用户session校验逻辑放在网关,而将user写入session的逻辑放在后端微服务,则第一次请求后,返回到web前端会存在两个sessionId, 一个是网关中生成的,一个是微服务中生成的,导致第二次请求会取出最后一个sessionId(微服务中生成的),
而该sesssionId在网关中是无法取出用户信息的,仍然提示用户未登录,该场景,需要先通过一次其他请求(比如隐藏一个不校验的图片地址请求)消耗掉第一次请求的sessionId不一致的问题。
建议直接将用户session的写入和校验都放到网关中进行处理。
3.网关zuul使用时,请求超时
ribbon.ReadTimeout=60000
ribbon.ConnectTimeout=60000
zuul.host.connect-timeout-millis=30000
zuul.host.socket-timeout-millis=30000
最新文章
- linux查看是什么操作系统是什么命令
- android Camera 如何判断当前使用的摄像头是前置还是后置
- C++公有继承
- 利用runTime,实现以模型为主的字典转模型(注意与KVC的区别)
- 大型项目 Gradle 的常用库和版本管理[转]
- HDU 5920 Ugly Problem 【模拟】 (2016中国大学生程序设计竞赛(长春))
- C++ BitArray 引用计数实现
- node-inspector使用
- Unix英雄传:图文细数十五位计算机先驱
- Unity DoTween 动画使用案例
- Lucene就是这么简单
- [Swift]LeetCode671. 二叉树中第二小的节点 | Second Minimum Node In a Binary Tree
- Windows下开启composer镜像服务来安装yii
- 【python】升级pip后报错解决pkg_resources.DistributionNotFound: The 'pip==7.1.0' distribution was not found and is required by the application
- [20171107]dbms_shared_pool.pin.txt
- vue在页面嵌入别的页面或者是视频2
- bootstrap动态生成层级ul-li 新闻预览 常用方法
- 性能提速:debounce(防抖)、throttle(节流/限频)
- c# 通过html导出pdf,带分页
- linux 实践到的命令 collection