我是靠谱客的博主 个性啤酒,最近开发中收集的这篇文章主要介绍关于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的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复