Bladeren bron

fix #2786 Optimized Content-Disposition handling: use 'filename*' only for non-ASCII names.

Shinsuke Sugaya 1 jaar geleden
bovenliggende
commit
d38211eadf
1 gewijzigde bestanden met toevoegingen van 10 en 1 verwijderingen
  1. 10 1
      src/main/java/org/codelibs/fess/helper/ViewHelper.java

+ 10 - 1
src/main/java/org/codelibs/fess/helper/ViewHelper.java

@@ -745,7 +745,16 @@ public class ViewHelper {
             }
 
             final String encodedName = URLEncoder.encode(name, Constants.UTF_8).replace("+", "%20");
-            response.header(CONTENT_DISPOSITION, contentDispositionType + "; filename=\"" + name + "\"; filename*=utf-8''" + encodedName);
+            final String contentDispositionValue;
+            if (name.equals(encodedName)) {
+                contentDispositionValue = contentDispositionType + "; filename=\"" + name + "\"";
+            } else {
+                contentDispositionValue = contentDispositionType + "; filename*=utf-8''" + encodedName;
+            }
+            if (logger.isDebugEnabled()) {
+                logger.debug("ResponseHeader: {}: {}", CONTENT_DISPOSITION, contentDispositionValue);
+            }
+            response.header(CONTENT_DISPOSITION, contentDispositionValue);
         } catch (final Exception e) {
             logger.warn("Failed to write a filename: {}", responseData, e);
         }