diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/downloader/HttpConnector.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/downloader/HttpConnector.java
index 3f8f716..c055f6f 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/downloader/HttpConnector.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/downloader/HttpConnector.java
@@ -20,6 +20,7 @@
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Ascii;
+import com.google.common.collect.ImmutableSet;
 import com.google.common.math.IntMath;
 import com.google.devtools.build.lib.events.Event;
 import com.google.devtools.build.lib.events.EventHandler;
@@ -50,6 +51,8 @@
   private static final int CONNECT_TIMEOUT_MS = 1000;
   private static final int MAX_CONNECT_TIMEOUT_MS = 10000;
   private static final int READ_TIMEOUT_MS = 20000;
+  private static final ImmutableSet<String> COMPRESSED_EXTENSIONS =
+      ImmutableSet.of("bz2", "gz", "jar", "tgz", "war", "xz", "zip");
 
   /**
    * Connects to HTTP (or file) URL with GET request and lazily returns payload.
@@ -83,7 +86,9 @@
       HttpURLConnection connection = null;
       try {
         connection = (HttpURLConnection) url.openConnection(proxy);
-        connection.setRequestProperty("Accept-Encoding", "gzip");
+        if (!COMPRESSED_EXTENSIONS.contains(getExtension(url.getPath()))) {
+          connection.setRequestProperty("Accept-Encoding", "gzip");
+        }
         connection.setConnectTimeout(connectTimeout);
         connection.setReadTimeout(READ_TIMEOUT_MS);
         int code;
@@ -173,7 +178,13 @@
         return connection.getInputStream();
       case "gzip":
       case "x-gzip":
-        return new GZIPInputStream(connection.getInputStream());
+        // Some web servers will send Content-Encoding: gzip even when we didn't request it, iff
+        // the file is a .gz file.
+        if (connection.getURL().getPath().endsWith(".gz")) {
+          return connection.getInputStream();
+        } else {
+          return new GZIPInputStream(connection.getInputStream());
+        }
       default:
         throw new UnrecoverableHttpException(
             "Unsupported and unrequested Content-Encoding: " + connection.getContentEncoding());
@@ -239,6 +250,14 @@
     return Ascii.equalsIgnoreCase(protocol, url.getProtocol());
   }
 
+  private static String getExtension(String path) {
+    int index = path.lastIndexOf('.');
+    if (index == -1) {
+      return "";
+    }
+    return path.substring(index + 1);
+  }
+
   private static final class UnrecoverableHttpException extends IOException {
     UnrecoverableHttpException(String message) {
       super(message);
