• 微服务当中使用openfeign做远程调用的时候,丢失请求头信息


    微服务当中使用openfeign做远程调用的时候,丢失请求头信息后,如果配置?
    
    
    package com.study.shopping.order.config;

    import feign.RequestInterceptor;
    import feign.RequestTemplate;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.context.request.RequestContextHolder;
    import org.springframework.web.context.request.ServletRequestAttributes;

    import javax.servlet.http.HttpServletRequest;

    /**
    * feign配置类
    **/
    @Configuration
    public class ShoppingFeignConfig {

    /**
    * 注入拦截器
    * feign调用时根据拦截器构造请求头,封装cookie解决远程调用时无法获取springsession
    */
    @Bean("requestInterceptor")
    public RequestInterceptor requestInterceptor() {
    // 创建拦截器
    return new RequestInterceptor() {
    @Override
    public void apply(RequestTemplate template) {
    System.out.println("feign远程调用,拦截器封装请求头...RequestInterceptor.apply");
    // 1、使用RequestContextHolder拿到原生请求的请求头信(下文环境保持器)
    // 从ThreadLocal中获取请求头(要保证feign调用与controller请求处在同一线程环境)
    ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
    if (requestAttributes != null) {
    HttpServletRequest request = requestAttributes.getRequest();// 获取controller请求对象
    if (request != null) {
    //2、同步请求头的数据(cookie)
    String cookie = request.getHeader("Cookie");// 获取Cookie
    template.header("Cookie", cookie);// 同步Cookie
    }
    }
    }
    };
    }
    }
     
  • 相关阅读:
    dw通过iis运行asp网站总结
    idea 连接mysql报错:Access denied for user 'root'@'localhost'(using password:YES)。
    idea 为模块添加Tomcat依赖 解决: Intelij IDEA 创建WEB项目时没有Servlet的jar包
    IntelliJ IDEA 高效率配置
    idea发布web项目在tomcat位置问题
    idea中HTML格式化时标签缩进问题
    IDEA 安装破解
    python中map()函数的用法讲解
    mac终端下svn常用命令
    SVN常用命令详解
  • 原文地址:https://www.cnblogs.com/it1042290135/p/16144964.html
Copyright © 2020-2023  润新知