Repository: knox
Updated Branches:
  refs/heads/master 1d399f26a -> e51dc99ac


KNOX-1412 - Knox should honor the Content-Encoding header when it can


Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/e51dc99a
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/e51dc99a
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/e51dc99a

Branch: refs/heads/master
Commit: e51dc99ac30a183c66f113a400fc514b4be6ba9e
Parents: 1d399f2
Author: Sandeep More <[email protected]>
Authored: Mon Aug 6 12:03:29 2018 -0400
Committer: Sandeep More <[email protected]>
Committed: Mon Aug 6 12:03:29 2018 -0400

----------------------------------------------------------------------
 .../filter/rewrite/impl/UrlRewriteRequest.java      | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/knox/blob/e51dc99a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteRequest.java
----------------------------------------------------------------------
diff --git 
a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteRequest.java
 
b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteRequest.java
index 3a8ae65..f97b64f 100644
--- 
a/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteRequest.java
+++ 
b/gateway-provider-rewrite/src/main/java/org/apache/knox/gateway/filter/rewrite/impl/UrlRewriteRequest.java
@@ -17,6 +17,7 @@
  */
 package org.apache.knox.gateway.filter.rewrite.impl;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.knox.gateway.filter.AbstractGatewayFilter;
 import org.apache.knox.gateway.filter.GatewayRequestWrapper;
 import 
org.apache.knox.gateway.filter.rewrite.api.UrlRewriteFilterContentDescriptor;
@@ -32,6 +33,7 @@ import org.apache.knox.gateway.util.MimeTypes;
 import org.apache.knox.gateway.util.urltemplate.Parser;
 import org.apache.knox.gateway.util.urltemplate.Resolver;
 import org.apache.knox.gateway.util.urltemplate.Template;
+import org.eclipse.jetty.http.HttpHeader;
 
 import javax.activation.MimeType;
 import javax.servlet.FilterConfig;
@@ -242,6 +244,20 @@ public class UrlRewriteRequest extends 
GatewayRequestWrapper implements Resolver
     ServletInputStream input = super.getInputStream();
     if( getContentLength() != 0 ) {
       MimeType mimeType = getMimeType();
+
+      /* In cases where content type is application/text and content-encoding 
is gzip */
+      final String contentEncoding = getHeader(
+          HttpHeader.CONTENT_ENCODING.asString());
+      if (!StringUtils.isBlank(contentEncoding) && StringUtils
+          .containsAny(contentEncoding, "gzip", "compress", "deflate", "br")) {
+        /* This prevents adding filters based on content-type, which in most 
cases would not be
+         * an issue but in cases where request specifies additional encoding 
this causes issues
+         * see KNOX-1412
+         */
+        mimeType = MimeTypes
+            .create("application/" + contentEncoding, getCharacterEncoding());
+      }
+
       UrlRewriteFilterContentDescriptor filterContentConfig = 
getRewriteFilterConfig( bodyFilterName, mimeType );
       if (filterContentConfig != null) {
         String asType = filterContentConfig.asType();

Reply via email to