diff options
author | Joakim Erdfelt | 2015-11-13 22:19:38 +0000 |
---|---|---|
committer | Joakim Erdfelt | 2015-11-13 22:19:38 +0000 |
commit | 2cac0b0052bb2fff37e1c315d84f74cf4245ead9 (patch) | |
tree | bb2259fd4ac2eda5c61791b26f6d02b30403548c | |
parent | dac1c56e79434523dcf0d5c33f23ae7354df40c6 (diff) | |
download | org.eclipse.jetty.project-2cac0b0052bb2fff37e1c315d84f74cf4245ead9.tar.gz org.eclipse.jetty.project-2cac0b0052bb2fff37e1c315d84f74cf4245ead9.tar.xz org.eclipse.jetty.project-2cac0b0052bb2fff37e1c315d84f74cf4245ead9.zip |
482173 - Track original Query string in Rewrite RuleContainer too
-rw-r--r-- | jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RuleContainer.java | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RuleContainer.java b/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RuleContainer.java index 34ae2b7574..08f0e9e3ff 100644 --- a/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RuleContainer.java +++ b/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RuleContainer.java @@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.server.AbstractHttpConnection; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.util.LazyList; +import org.eclipse.jetty.util.URIUtil; import org.eclipse.jetty.util.log.Log; import org.eclipse.jetty.util.log.Logger; @@ -38,11 +39,13 @@ import org.eclipse.jetty.util.log.Logger; public class RuleContainer extends Rule { + public static final String ORIGINAL_QUERYSTRING_ATTRIBUTE_SUFFIX = ".QUERYSTRING"; private static final Logger LOG = Log.getLogger(RuleContainer.class); protected Rule[] _rules; protected String _originalPathAttribute; + protected String _originalQueryStringAttribute; protected boolean _rewriteRequestURI=true; protected boolean _rewritePathInfo=true; @@ -172,6 +175,7 @@ public class RuleContainer extends Rule public void setOriginalPathAttribute(String originalPathAttribte) { _originalPathAttribute=originalPathAttribte; + _originalQueryStringAttribute = originalPathAttribte + ORIGINAL_QUERYSTRING_ATTRIBUTE_SUFFIX; } /** @@ -195,18 +199,26 @@ public class RuleContainer extends Rule protected String apply(String target, HttpServletRequest request, HttpServletResponse response) throws IOException { boolean original_set=_originalPathAttribute==null; + + target = URIUtil.compactPath(target); for (Rule rule : _rules) { String applied=rule.matchAndApply(target,request, response); if (applied!=null) - { + { + applied = URIUtil.compactPath(applied); + LOG.debug("applied {}",rule); LOG.debug("rewrote {} to {}",target,applied); if (!original_set) { original_set=true; request.setAttribute(_originalPathAttribute, target); + + String query = request.getQueryString(); + if (query != null) + request.setAttribute(_originalQueryStringAttribute,query); } if (_rewriteRequestURI) |