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
    

      

  • 相关阅读:
    【解题报告】NOIP2018
    【解题报告】NOIP2013
    【解题报告】NOIP2014
    【解题报告】NOIP2015
    【解题报告】NOIP2016
    【解题报告】CSPS2020
    【全程NOIP计划】初级数据结构1
    如何通过一个结构体成员变量的地址找到该结构体的首地址?[备忘]
    IGT笔试题,正整数N等于M个不同的正整数之和的问题
    Mac下Perl脚本如何运行
  • 原文地址:https://www.cnblogs.com/brant/p/9864848.html
Copyright © 2011-2022 走看看