Created
March 13, 2020 06:38
-
-
Save stfsy/4ef3e2091a2c37755153d9a89676ca90 to your computer and use it in GitHub Desktop.
Overriding X-Forwarded-Protocol and X-Forwarded-Host
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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