zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    Android简易抽屉效果
    apk 下载并自动安装
    python2.7_1.3_获取远程设备的IP地址
    python2.7_1.2_打印设备名和IPv4地址
    python2.7_1.14_编写一个简单的回显客户端/服务器应用
    python2.7_1.13_编写一个SNTP客户端
    C语言程序转换为Python语言
    5分钟弄懂Docker!
    让正则表达式变简单(PythonVerbalExpressions)
    python sqlalchemy-migrate 使用方法
  • 原文地址:https://www.cnblogs.com/brant/p/9864848.html
Copyright © 2011-2022 走看看