header設置透傳
@Configuration
public class FeignRequestInterceptor implements RequestInterceptor {
private static final String CONTENT_LENGTH_KEY = "content-length";
private static final String TRANSFER_ENCODING_KEY="Transfer-Encoding";
private static final String TRANSFER_ENCODING_VALUE="chunked";
@Override
public void apply(RequestTemplate template) {
HttpServletRequest request = RequestContext.getCurrentContext().getRequest();
Enumeration<String> headerNames = request.getHeaderNames();
if(headerNames !=null){
while (headerNames.hasMoreElements()) {
String headName = headerNames.nextElement();
//跳過 content-length
if(!CONTENT_LENGTH_KEY.equals(headName)){
template.header(headName, request.getHeader(headName));
}
}
//設置token
Object userToken = request.getAttribute(CONST_USER_NAME_TOKEN);
if (userToken != null) {
template.header(CONST_USER_NAME_TOKEN, userToken.toString());
}
//shortName設置
Object shortName = request.getAttribute(SHORT_NAME);
if (shortName != null) {
template.header(SHORT_NAME, shortName.toString());
}
//設置TRANSFER_ENCODING 忽略 content-length
template.header(TRANSFER_ENCODING_KEY,TRANSFER_ENCODING_VALUE);
}
}
}
浙公網安備 33010602011771號