diff --git a/bt5/erp5_deferred_style/SkinTemplateItem/portal_skins/erp5_deferred_style_core/Base_renderSimpleView.xml b/bt5/erp5_deferred_style/SkinTemplateItem/portal_skins/erp5_deferred_style_core/Base_renderSimpleView.xml
index 6f4cfd7c6274cd9a51d8f3841cc11de9ce82f148..56c39209b2bd891ace34b36d486a942e41d3f586 100644
--- a/bt5/erp5_deferred_style/SkinTemplateItem/portal_skins/erp5_deferred_style_core/Base_renderSimpleView.xml
+++ b/bt5/erp5_deferred_style/SkinTemplateItem/portal_skins/erp5_deferred_style_core/Base_renderSimpleView.xml
@@ -62,9 +62,14 @@ if skin_name and skin_name != \'None\': # make_query serializes None as \'None\'
 with portal.Localizer.translationContext(localizer_language):\n
   report_data = getattr(context, deferred_style_dialog_method)(**params)\n
 \n
-  attachment_name = [x[len(\' filename=\'):] for x in (request.RESPONSE.getHeader(\n
-                          \'content-disposition\') or \'\').split(\';\')\n
-                        if x.startswith(\' filename=\')][0]\n
+  attachment_name_list = [x[len(\' filename=\'):] for x in (request.RESPONSE.getHeader(\n
+                        \'content-disposition\') or \'\').split(\';\')\n
+                            if x.startswith(\' filename=\')]\n
+  if attachment_name_list:\n
+    attachment_name, = attachment_name_list\n
+  else:\n
+    assert \'inline\' in (request.RESPONSE.getHeader(\'content-disposition\') or \'\')\n
+    attachment_name = \'index.html\'\n
   if attachment_name.startswith(\'"\'):\n
     attachment_name = attachment_name[1:]\n
   if attachment_name.endswith(\'"\'):\n
diff --git a/bt5/erp5_deferred_style/SkinTemplateItem/portal_skins/erp5_deferred_style_core/Base_report.xml b/bt5/erp5_deferred_style/SkinTemplateItem/portal_skins/erp5_deferred_style_core/Base_report.xml
index c87386eab585242515f556c59cd52919f899f723..a0aa85ad38057e9ce00867c6ef9103f924fc3136 100644
--- a/bt5/erp5_deferred_style/SkinTemplateItem/portal_skins/erp5_deferred_style_core/Base_report.xml
+++ b/bt5/erp5_deferred_style/SkinTemplateItem/portal_skins/erp5_deferred_style_core/Base_report.xml
@@ -82,9 +82,14 @@ with portal.Localizer.translationContext(localizer_language):\n
                          report_method=dummyReportMethod,\n
                          form=portal.restrictedTraverse(form_path)))\n
 \n
-  attachment_name = [x[len(\' filename=\'):] for x in (request.RESPONSE.getHeader(\n
+  attachment_name_list = [x[len(\' filename=\'):] for x in (request.RESPONSE.getHeader(\n
                         \'content-disposition\') or \'\').split(\';\')\n
-                      if x.startswith(\' filename=\')][0]\n
+                            if x.startswith(\' filename=\')]\n
+  if attachment_name_list:\n
+    attachment_name, = attachment_name_list\n
+  else:\n
+    assert \'inline\' in (request.RESPONSE.getHeader(\'content-disposition\') or \'\')\n
+    attachment_name = \'index.html\'\n
   if attachment_name.startswith(\'"\'):\n
     attachment_name = attachment_name[1:]\n
   if attachment_name.endswith(\'"\'):\n
diff --git a/product/ERP5/mixin/downloadable.py b/product/ERP5/mixin/downloadable.py
index 3f1c574e7c55b693586147d037bdef694b3a08ea..9f97426db68f94015a10ca8158ee41c6a780bd16 100644
--- a/product/ERP5/mixin/downloadable.py
+++ b/product/ERP5/mixin/downloadable.py
@@ -127,6 +127,8 @@ class DownloadableMixin:
       RESPONSE.setHeader('Content-Disposition',
                          'attachment; filename="%s"' % filename)
       RESPONSE.setHeader('Accept-Ranges', 'bytes')
+    else:
+      RESPONSE.setHeader('Content-Disposition', 'inline')
     return str(data)
 
   security.declareProtected(Permissions.AccessContentsInformation,