• springcloud 实战 网关zuul使用中遇到的相关问题


    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
    

      

  • 相关阅读:
    C# 调用Java Webservice 加入SoapHeader 验证信息
    SqlServer查找表中多余的重复记录
    INI文件的读写
    Sql触发器脚本
    Sql遍历更新脚本
    CAS 单点登录,通过ticket 获取登录用户
    模块 | 验证格式
    aja如何解决跨域请求?
    说说各个浏览器box模型
    Vue 双向数据绑定原理分析
  • 原文地址:https://www.cnblogs.com/brant/p/9864848.html
Copyright © 2020-2023  润新知