diff options
author | Greg Wilkins | 2015-11-02 01:21:19 +0000 |
---|---|---|
committer | Greg Wilkins | 2015-11-02 01:21:19 +0000 |
commit | cd0cc2ef36a558d948bf26aff4f9e3519da2f823 (patch) | |
tree | 98054031f84d70c936b9a3f1364f28be4d39ed12 /jetty-fcgi/fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/proxy/FastCGIProxyServlet.java | |
parent | 639753b5ed37778d7231acfe9d52039aed66351e (diff) | |
parent | 303f98e38cf1520674333c5a06f0b7e1e7ca98ef (diff) | |
download | org.eclipse.jetty.project-cd0cc2ef36a558d948bf26aff4f9e3519da2f823.tar.gz org.eclipse.jetty.project-cd0cc2ef36a558d948bf26aff4f9e3519da2f823.tar.xz org.eclipse.jetty.project-cd0cc2ef36a558d948bf26aff4f9e3519da2f823.zip |
Merge branch 'master' into unix-socket
Diffstat (limited to 'jetty-fcgi/fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/proxy/FastCGIProxyServlet.java')
-rw-r--r-- | jetty-fcgi/fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/proxy/FastCGIProxyServlet.java | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/jetty-fcgi/fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/proxy/FastCGIProxyServlet.java b/jetty-fcgi/fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/proxy/FastCGIProxyServlet.java index 20468019e2..8587042304 100644 --- a/jetty-fcgi/fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/proxy/FastCGIProxyServlet.java +++ b/jetty-fcgi/fcgi-server/src/main/java/org/eclipse/jetty/fcgi/server/proxy/FastCGIProxyServlet.java @@ -70,6 +70,7 @@ public class FastCGIProxyServlet extends AsyncProxyServlet.Transparent { public static final String SCRIPT_ROOT_INIT_PARAM = "scriptRoot"; public static final String SCRIPT_PATTERN_INIT_PARAM = "scriptPattern"; + public static final String ORIGINAL_URI_ATTRIBUTE_INIT_PARAM = "originalURIAttribute"; public static final String FASTCGI_HTTPS_INIT_PARAM = "fastCGI.HTTPS"; private static final String REMOTE_ADDR_ATTRIBUTE = FastCGIProxyServlet.class.getName() + ".remoteAddr"; @@ -81,6 +82,7 @@ public class FastCGIProxyServlet extends AsyncProxyServlet.Transparent private static final String REQUEST_URI_ATTRIBUTE = FastCGIProxyServlet.class.getName() + ".requestURI"; private Pattern scriptPattern; + private String originalURIAttribute; private boolean fcgiHTTPS; @Override @@ -93,6 +95,8 @@ public class FastCGIProxyServlet extends AsyncProxyServlet.Transparent value = "(.+?\\.php)"; scriptPattern = Pattern.compile(value); + originalURIAttribute = getInitParameter(ORIGINAL_URI_ATTRIBUTE_INIT_PARAM); + fcgiHTTPS = Boolean.parseBoolean(getInitParameter(FASTCGI_HTTPS_INIT_PARAM)); } @@ -114,24 +118,33 @@ public class FastCGIProxyServlet extends AsyncProxyServlet.Transparent proxyRequest.attribute(SERVER_NAME_ATTRIBUTE, request.getServerName()); proxyRequest.attribute(SERVER_ADDR_ATTRIBUTE, request.getLocalAddr()); proxyRequest.attribute(SERVER_PORT_ATTRIBUTE, String.valueOf(request.getLocalPort())); - proxyRequest.attribute(SCHEME_ATTRIBUTE, request.getScheme()); - // If we are forwarded or included, retain the original request URI. - String originalPath = (String)request.getAttribute(RequestDispatcher.FORWARD_REQUEST_URI); - String originalQuery = (String)request.getAttribute(RequestDispatcher.FORWARD_QUERY_STRING); - if (originalPath == null) + // Has the original URI been rewritten ? + String originalURI = null; + if (originalURIAttribute != null) + originalURI = (String)request.getAttribute(originalURIAttribute); + + if (originalURI == null) { - originalPath = (String)request.getAttribute(RequestDispatcher.INCLUDE_REQUEST_URI); - originalQuery = (String)request.getAttribute(RequestDispatcher.INCLUDE_QUERY_STRING); + // If we are forwarded or included, retain the original request URI. + String originalPath = (String)request.getAttribute(RequestDispatcher.FORWARD_REQUEST_URI); + String originalQuery = (String)request.getAttribute(RequestDispatcher.FORWARD_QUERY_STRING); + if (originalPath == null) + { + originalPath = (String)request.getAttribute(RequestDispatcher.INCLUDE_REQUEST_URI); + originalQuery = (String)request.getAttribute(RequestDispatcher.INCLUDE_QUERY_STRING); + } + if (originalPath != null) + { + originalURI = originalPath; + if (originalQuery != null) + originalURI += "?" + originalQuery; + } } - if (originalPath != null) - { - String originalURI = originalPath; - if (originalQuery != null) - originalURI += "?" + originalQuery; + + if (originalURI != null) proxyRequest.attribute(REQUEST_URI_ATTRIBUTE, originalURI); - } // If the Host header is missing, add it. if (!proxyRequest.getHeaders().containsKey(HttpHeader.HOST.asString())) |