Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private String getClientIP() {
- String xfHeader = request.getRemoteAddr();
- if (StringUtils.isBlank(xfHeader) || xfHeader.equals("127.0.0.1")) {
- return request.getHeader("X-Forwarded-For");
- }
- return xfHeader.split(",")[0];
- }
- zuul:
- ignoreSecurityHeaders: false
- routes:
- app:
- path: /app/**
- sensitiveHeaders:
- url: http://localhost:8082/app/
- server:
- compression:
- enabled: true
- port: 80
- package smartHomeWebsite;
- import java.util.Optional;
- import org.springframework.cloud.netflix.zuul.filters.Route;
- import org.springframework.cloud.netflix.zuul.filters.RouteLocator;
- import org.springframework.stereotype.Component;
- import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
- import org.springframework.web.util.UrlPathHelper;
- import com.netflix.util.Pair;
- import com.netflix.zuul.ZuulFilter;
- import com.netflix.zuul.context.RequestContext;
- @Component
- public class LocationHeaderRewritingFilter extends ZuulFilter {
- private final UrlPathHelper urlPathHelper = new UrlPathHelper();
- private final RouteLocator routeLocator;
- public LocationHeaderRewritingFilter(RouteLocator routeLocator) {
- this.routeLocator = routeLocator;
- }
- @Override
- public String filterType() {
- return "post";
- }
- @Override
- public int filterOrder() {
- return 100;
- }
- public boolean shouldFilter() {
- return extractLocationHeader(RequestContext.getCurrentContext()).isPresent();
- }
- public Object run() {
- RequestContext ctx = RequestContext.getCurrentContext();
- Route route = routeLocator.getMatchingRoute(urlPathHelper.getPathWithinApplication(ctx.getRequest()));
- if (route != null) {
- Pair<String, String> lh = extractLocationHeader(ctx).get();
- lh.setSecond(lh.second().replace(route.getLocation(),
- ServletUriComponentsBuilder.fromCurrentContextPath().path(route.getPrefix()).build().toUriString()));
- }
- return null;
- }
- private Optional<Pair<String, String>> extractLocationHeader(RequestContext ctx) {
- return ctx.getZuulResponseHeaders()
- .stream()
- .filter(p -> "Location".equals(p.first()))
- .findFirst();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement