今天项目中用到了写入流下载。代码如下。
HttpServletResponse reponse = super.getResponse();
reponse.setHeader("Content-Disposition", "attachment;filename=" + fileName);
reponse.setContentType("application/octet-stream");
reponse.setBufferSize(2048);
reponse.setContentLength(byteArr.length);
ServletOutputStream out = null;
try {
out = reponse.getOutputStream();
out.write(byteArr, 0, byteArr.length);
} catch (IOException e1) {
// TODO Auto-generated catch block
log.error(e1);
}
这段代码在项目中一直运行良好。。近日,有位兄弟,在这里面加入了点点代码。。
导致在 chorme 浏览器中,抛出异常。
异常如下
收到了来自服务器的重复标头 来自服务器的响应包含重复标头。此问题通常是由于网站或代理配置不正确导致的。只有网站或代理管理员才能解决此问题。 错误 349 (net::ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION):我们收到了多个“Content-Disposition”标头。我们不允许此行为,以防遭到 HTTP 响应拆分攻击。
但使用其他IE8,IE9,firefox 都运行良好。。
于上上网一搜,,还真搜出一堆。。解决方法如下
原因是因为下载文件名中包含有逗号分隔符。。在所有的浏览器中,下载文件名不支持双字节字符。
参考请见 http://greenbytes.de/tech/tc2231/#attmultinstances
Content-Disposition: attachment; filename=foo,bar.html
^ (PARSE ERROR)
FF11 | warn (accepts the unquoted value) |
FF14 | warn (accepts the unquoted value) |
MSIE8 | warn (accepts the unquoted value) |
MSIE9 | warn (accepts the unquoted value) |
Opera | warn (accepts the unquoted value) |
Safari | warn (treats the comma as delimiter and offers to download "foo.html") |
Konq | pass (ignores thes header field) |
Chr17 | pass (reports a network error ("Duplicate headers received from server")) |
Chr18 | pass (reports a network error ("Duplicate headers received from server")) |
'attachment', specifying a filename of foo,bar.html
using a comma despite using token syntax.
相关推荐
解决跨域访问-需要设置HTTP响应标头设置
在涉及到不同类型的响应内容(如文件下载或导出)时,应确保避免使用可能导致部分页面更新的控件,或正确配置这些控件以触发全页面回发。通过这种方式,可以确保服务器能够正确设置HTTP响应的全部内容,包括必要的...
此回购包含在Puppeteer和Playwright中拦截响应的示例。 这些示例做什么: :wrench: 在或创建一个新的Chrome-Devtools-Protocol(CDP)会话。 :hammer: 启用Fetch域,让我们用自己的代码替代浏览器的网络层。 :...
Header Editor是一款管理浏览器请求的Chrome扩展,包括修改请求头、修改响应头、重定向请求、取消请求。 您可以从Redirector导入规则 规则说明: 1、匹配类型 规则会应用到满足相应匹配条件的URL上 全部:...
Http proxy,由VB6.0编写的代理服务器的源码,要... 收集所有必要信息后,它连接到真实服务器并传递标头数据。 打开程序后,可单击监听按钮,实现代码服务的监听功能,也可适时停止这个功能。 本源码来自于国外。
然而,这种模式下,服务器需要进行额外的配置,以处理这些原本不存在于服务器路由中的路径。 配置 history 模式的步骤如下: 1. **安装 URL 重写模块**:首先,你需要确保 IIS 服务器安装了 URL 重写模块。这可以...
网页标头是网页设计中的重要元素,它通常位于页面顶部,包含了网站的logo、导航菜单、搜索框等关键信息,为用户提供对整个网站结构的快速理解。在网页制作过程中,尤其是使用ASP.NET技术进行开发时,标头的设计与...
Chrome具有GPU硬件加速:当激活GPU硬件加速时,使用“Google Chrome”浏览那些含有大量图片之网站时可以更快渲染完成并使页面滚动时不会出现图像破裂的问题。 2013年4月份,Google宣布称将为Chrome浏览器开发新的...
标题中的“推荐企业网站FLASH标头”指的是在企业网站设计中使用的一种视觉元素,通常位于网页顶部,以吸引用户注意力并展示品牌形象。FLASH是Adobe公司开发的一种矢量图形动画技术,它允许设计师创建动态、交互式的...
在提供的"VerColHeader"文件中,可能包含了实现上述功能的示例代码或配置文件。通过查看这些文件,你可以更具体地了解如何在实际项目中应用这些技术。记住,理解并掌握这些知识点将帮助你更好地利用DevExpress ...
当响应即将写入标头时,执行一个侦听器。 安装 这是通过提供的模块。 使用完成 : $ npm install on-headers API var onHeaders = require ( 'on-headers' ) onHeaders(res,监听器) 当为res发出标题时,这将...
Chrome对于请求头和响应头的展示具有明确的规定,即控制台中只展示发送出去或刚接收到的路线。因此编辑后的请求链接,控制台的网络栏能够正常展示;而编辑后的响应分区由于不属于刚接收到的细分,所以从控制台上就...
这通常是由于提供的认证信息不正确或缺失。401.1和401.2错误进一步细化了未授权的原因,如证书不匹配或WWW验证表头问题。401.3指资源的ACL(访问控制列表)不允许访问,401.4和401.5是授权服务被筛选程序或ISAPI/CGI...
以及引入了命令行工具 Appcmd.exe ,给 Web 服务器的日常管理、监视和配置提供了除图形接口外的另一种方式,更为简单、高效。 同Windows XP一样,在Windows Vista的默认设置下,IIS (Internet 信息服务) 7.0未予安装...
Rails应用程序的服务器时间标头
6. **配置模拟服务器**:虽然我们不是在IIS中配置应用池、站点或虚拟目录,但可以通过代码来模拟这些设置,比如处理多个虚拟路径,或者设置不同的应用程序配置。 7. **多线程和异步处理**:模拟服务器可能需要处理...
* 503(服务不可用):服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。 * 504(网关超时):服务器作为网关或代理,但是没有及时从上游服务器收到请求。 * 505(HTTP 版本不受支持):服务器不...
这通常是因为服务器配置不正确或者权限设置不足。确保你已经正确设置了上传目录的读写权限,并且在.NET中配置了正确的MIME类型,以便服务器能够识别并处理图片文件。此外,检查服务器的防火墙设置,确保允许来自编辑...
用于在基于Underwow的服务器(Wildfly,JBOSS EAP)中正确处理CORS标头Java EE的过滤器处理似乎有所疏忽,因为当容器配置了容器管理的授权并且尚未(尚未)通过身份验证的用户尝试访问受保护的资源时,容器将拦截该...
分段标头通常用作数据分类的标识,例如在联系人应用中,按字母顺序排列的联系人会按照首字母分为不同的段落,每个首字母就是一个分段标头。这样,用户可以通过查看标头快速定位到特定部分的数据。 实现这个功能,...