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

  

最新文章

  1. linux查看是什么操作系统是什么命令
  2. android Camera 如何判断当前使用的摄像头是前置还是后置
  3. C++公有继承
  4. 利用runTime,实现以模型为主的字典转模型(注意与KVC的区别)
  5. 大型项目 Gradle 的常用库和版本管理[转]
  6. HDU 5920 Ugly Problem 【模拟】 (2016中国大学生程序设计竞赛(长春))
  7. C++ BitArray 引用计数实现
  8. node-inspector使用
  9. Unix英雄传:图文细数十五位计算机先驱
  10. Unity DoTween 动画使用案例
  11. Lucene就是这么简单
  12. [Swift]LeetCode671. 二叉树中第二小的节点 | Second Minimum Node In a Binary Tree
  13. Windows下开启composer镜像服务来安装yii
  14. 【python】升级pip后报错解决pkg_resources.DistributionNotFound: The 'pip==7.1.0' distribution was not found and is required by the application
  15. [20171107]dbms_shared_pool.pin.txt
  16. vue在页面嵌入别的页面或者是视频2
  17. bootstrap动态生成层级ul-li 新闻预览 常用方法
  18. 性能提速:debounce(防抖)、throttle(节流/限频)
  19. c# 通过html导出pdf,带分页
  20. linux 实践到的命令 collection

热门文章

  1. [javascript]——将变量转化为字符串
  2. 实例的初始化由JVM装载类的时候进行,保证了线程的安全性
  3. Eclipse署动态web项目方法
  4. 启动express,端口被占用
  5. STM32-RTC实时时钟-毫秒计时实现
  6. app.module.ts说明
  7. linux如何安装和启动mongdb
  8. 将python的代码文件打包成可执行文件
  9. 云服务器、vps、虚拟主机的区别
  10. Unity3D实现随机播放背景音频