我是靠谱客的博主 个性啤酒,最近开发中收集的这篇文章主要介绍关于SpringCloud中使用Feign远程调用,丢失Header的问题关于SpringCloud中使用Feign远程调用,丢失Header的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

关于SpringCloud中使用Feign远程调用,丢失Header的问题

在微服务实际开发当中,Feign负责远程调用,在调用过程中,我们的远程服务可能做了某些权限验证、或者接收我们自定义头的一些信息和参数,如果没有token或者某些参数,可能会无法调用甚至调用失败,当通过Feign调用其他的服务时,Feign是不会带上当前请求的Cookie信息和头信息的,而我们一般都会在Cookie或者请求头里带着一些重要的信息,如cookieid,token等

我们设置Feign的拦截器

直接上代码:
pom依赖

<dependency>
   	<groupId>io.github.openfeign</groupId>
    <artifactId>feign-core</artifactId>
    <version>10.2.3</version>
    <scope>compile</scope>
</dependency>

Feign拦截器

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

import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;

/**
 * Feign请求拦截器
 * 
 *
 * @author simon
 * @create 2018-09-07 9:51
 **/
public class FeignBasicAuthRequestInterceptor implements RequestInterceptor {

  @Override
  public void apply(RequestTemplate requestTemplate) {
    ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
            .getRequestAttributes();
    HttpServletRequest request = attributes.getRequest();
    Enumeration<String> headerNames = request.getHeaderNames();
    if (headerNames != null) {
      while (headerNames.hasMoreElements()) {
        String name = headerNames.nextElement();
        String values = request.getHeader(name);
        requestTemplate.header(name, values);
      }
    }

  }
}

配置类

@Configuration
public class FeignSupportConfig {
  /**
   * feign请求拦截器
   *
   * @return
   */
  @Bean
  public RequestInterceptor requestInterceptor(){
    return new FeignBasicAuthRequestInterceptor();
  }
}

应该是将request请求头中的key,value取出,从新赋值给新的请求头,转给之后的服务
例如:A服务中接收到request请求,而A服务中使用Feign远程调用了B服务,那么A所接收到的requestHeader会组成新的请求头,在B中就可以使用这个新组成的请求头

最后

以上就是个性啤酒为你收集整理的关于SpringCloud中使用Feign远程调用,丢失Header的问题关于SpringCloud中使用Feign远程调用,丢失Header的问题的全部内容,希望文章能够帮你解决关于SpringCloud中使用Feign远程调用,丢失Header的问题关于SpringCloud中使用Feign远程调用,丢失Header的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部