概述
在我们做前后端分离的时候,我们往往会在请求头中加入一些信息,如果session,token等等,但是当我们要通过
解决办法
1.Feign实现RequestInterceptor
@Configuration
public class FeignConfiguration implements RequestInterceptor {
@Override
public void apply(RequestTemplate template) {
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);
template.header(name, values);
}
}
}
}
2.在Feign请求A服务的注解FeignClient加上configuration = FeignConfiguration.class
@FeignClient(name = "lad-proxy", configuration = FeignConfiguration.class)
public interface UserClient {
}
3.然后就可以在A服务接收到Feign转发过来的请求头信息
protected String getRequestSessionId() {
HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
return request.getHeader("zentaosid");
}