zoukankan      html  css  js  c++  java
  • ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION :浏览器下载报错

    ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION:Excel导出报错,浏览器崩溃。

    服务端设置的响应头:

     
    header('pragma:public');
     
    header('Content-type:application/vnd.ms-excel;charset=utf-8;name = "'.$xlsTitle.'.xls"');
     
    header("Content-Disposition:attachment;filename = '{$fileName}.xls'");//attachment新窗口打印inline本窗口打印
     
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
     
    $objWriter->save('php://output');
    

      

    错误原因:

    Content-Disposition:attachment该行header头中filename 需要引号包裹。上图是已经修复的。
    

      

    项目使用浏览器 :Chrome;

    详解:上述问题,是浏览器中filename中包含特殊的标点符号,浏览器误认为是HTTP 响应拆分攻击。所以在filename中加引号包裹,以告诉浏览器是一个文件名。大多文章提供的是filename中包含标点符号(,)。实际中并无运用该符号,而是(.)。故认为可能特殊符号都会出现问题。

    Content-Disposition:

    在HTTP场景中,第一个参数或者是inline(默认值,表示回复中的消息体会以页面的一部分或者整个页面的形式展示),或者是attachment(意味着消息体应该被下载到本地;大多数浏览器会呈现一个“保存为”的对话框,将filename的值预填为下载后的文件名,假如它存在的话)。

     
    Content-Disposition: inline
     
    Content-Disposition: attachment
     
    Content-Disposition: attachment; filename="filename.jpg"
    

      

    作为multipart body中的消息头

    在HTTP场景中。第一个参数总是固定不变的form-data;附加的参数不区分大小写,并且拥有参数值,参数名与参数值用等号(=)连接,参数值用双引号括起来。参数之间用分号(;)分隔。

     
    Content-Disposition: form-data
     
    Content-Disposition: form-data; name="fieldName"
     
    Content-Disposition: form-data; name="fieldName"; filename="filename.jpg"
    

      

    本文内容,有摘自其他内容https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Disposition。在此表示感谢!

  • 相关阅读:
    LUOGU P1654 OSU! (概率期望)
    poj 3682 King Arthur's Birthday Celebration (期望dp)
    CF148D Bag of mice (期望dp)
    LUOGU P1514 引水入城 (bfs)
    LUOGU P4281 [AHOI2008]紧急集合 / 聚会 (lca)
    LUOGU P1313 计算系数 (组合数学)
    LUOGU P2949 [USACO09OPEN]工作调度Work Scheduling (贪心)
    LUOGU P1613 跑路 (倍增floyd)
    LUOGU P1291 [SHOI2002]百事世界杯之旅 (期望dp)
    poj 3208--Apocalypse Someday(数位dp)
  • 原文地址:https://www.cnblogs.com/ygunoil/p/14312963.html
Copyright © 2011-2022 走看看