Skip to content

Instantly share code, notes, and snippets.

@stfsy
Created March 13, 2020 06:38
Show Gist options
  • Save stfsy/4ef3e2091a2c37755153d9a89676ca90 to your computer and use it in GitHub Desktop.
Save stfsy/4ef3e2091a2c37755153d9a89676ca90 to your computer and use it in GitHub Desktop.
Overriding X-Forwarded-Protocol and X-Forwarded-Host
package com.blog.demo.interceptor;
import java.util.Enumeration;
import java.util.Objects;
import javax.servlet.http.HttpServletRequest;
import org.apache.cxf.interceptor.AbstractInDatabindingInterceptor;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.Phase;
/**
* RequestPropertiesInterceptor
*/
public class RequestPropertiesInterceptor extends AbstractInDatabindingInterceptor {
private static final String PROTOCOL = "https://";
public RequestPropertiesInterceptor() {
super(Phase.USER_STREAM);
// TODO Auto-generated constructor stub
}
@Override
public void handleMessage(Message message) throws Fault {
HttpServletRequest httpServletRequest = (HttpServletRequest) message.get("HTTP.REQUEST");
logHttpHeaders(httpServletRequest);
String protocol = getForwardedPort(httpServletRequest, "abcyaz");
String host = getForwardedHost(httpServletRequest, "localhost");
String publicPath = getPublicPath(httpServletRequest);
message.put("org.apache.cxf.request.url", protocol + "://" + host + publicPath);
}
private void logHttpHeaders(HttpServletRequest httpServletRequest) {
Enumeration<String> names = httpServletRequest.getHeaderNames();
while(names.hasMoreElements()) {
String name = names.nextElement();
System.out.println(name + "/" + httpServletRequest.getHeader(name));
}
}
private String getPublicPath(HttpServletRequest httpServletRequest) {
String path = httpServletRequest.getRequestURI();
String publicPath = path.substring(path.indexOf("/", 1));
return publicPath;
}
private String getForwardedHost(HttpServletRequest httpServletRequest, String defaultValue) {
String forwardedHeader = httpServletRequest.getHeader("x-forwarded-host");
if (Objects.isNull(forwardedHeader)) {
return defaultValue;
} else {
return forwardedHeader;
}
}
private String getForwardedPort(HttpServletRequest httpServletRequest, String defaultValue) {
String forwardedPort = httpServletRequest.getHeader("x-forwarded-proto");
if (Objects.isNull(forwardedPort)) {
return defaultValue;
} else {
return forwardedPort;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment