今天项目中用到了写入流下载。代码如下。
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响应的全部内容,包括必要的...
Rails框架默认并未开启服务器时间标头,但可以通过一些配置或第三方库来实现。 标题“Ruby-Rails应用程序的服务器时间标头”涉及到的关键知识点包括: 1. **服务器时间标头**:这是一个HTTP响应头,通常称为`X-...
这通常是由于提供的认证信息不正确或缺失。401.1和401.2错误进一步细化了未授权的原因,如证书不匹配或WWW验证表头问题。401.3指资源的ACL(访问控制列表)不允许访问,401.4和401.5是授权服务被筛选程序或ISAPI/CGI...
此回购包含在Puppeteer和Playwright中拦截响应的示例。 这些示例做什么: :wrench: 在或创建一个新的Chrome-Devtools-Protocol(CDP)会话。 :hammer: 启用Fetch域,让我们用自己的代码替代浏览器的网络层。 :...
Header Editor是一款管理浏览器请求的Chrome扩展,包括修改请求头、修改响应头、重定向请求、取消请求。 您可以从Redirector导入规则 规则说明: 1、匹配类型 规则会应用到满足相应匹配条件的URL上 全部:...
如果该字段未指定或与页面内的`<meta>`标签中的编码声明不一致,则可能导致浏览器解析错误。 **问题表现** - **谷歌和火狐浏览器**: 这两个现代浏览器通常会根据`<meta>`标签中的声明来解析网页,因此即使HTTP响应...
Http proxy,由VB6.0编写的代理服务器的源码,要... 收集所有必要信息后,它连接到真实服务器并传递标头数据。 打开程序后,可单击监听按钮,实现代码服务的监听功能,也可适时停止这个功能。 本源码来自于国外。
在这种情况下,由于IIS和Apache不能同时监听同一个端口(如80端口),我们需要利用IIS的反向代理功能来实现对Apache或Tomcat站点的访问。下面将详细讲解如何设置IIS反向代理,以及如何实现隐式URL。 首先,理解反向...
2. **利用Referer请求头阻止“盗链”**:服务器可以通过检查请求的`Referer`字段来判断请求是否来自预期的源,如果不是,可以拒绝响应,防止资源被其他网站非法引用。 3. **load-on-startup标签的作用**:在Servlet...
1. 使用代理录制:设置浏览器的代理为LoadRunner的代理服务器,这样所有网络流量都会通过LoadRunner进行,从而解决录制问题。在LoadRunner中,这需要在"Run Time Settings"的"Recording Options"中配置代理设置。 2...
然而,这种模式下,服务器需要进行额外的配置,以处理这些原本不存在于服务器路由中的路径。 配置 history 模式的步骤如下: 1. **安装 URL 重写模块**:首先,你需要确保 IIS 服务器安装了 URL 重写模块。这可以...
网页标头是网页设计中的重要元素,它通常位于页面顶部,包含了网站的logo、导航菜单、搜索框等关键信息,为用户提供对整个网站结构的快速理解。在网页制作过程中,尤其是使用ASP.NET技术进行开发时,标头的设计与...
Chrome具有GPU硬件加速:当激活GPU硬件加速时,使用“Google Chrome”浏览那些含有大量图片之网站时可以更快渲染完成并使页面滚动时不会出现图像破裂的问题。 2013年4月份,Google宣布称将为Chrome浏览器开发新的...
标题中的“推荐企业网站FLASH标头”指的是在企业网站设计中使用的一种视觉元素,通常位于网页顶部,以吸引用户注意力并展示品牌形象。FLASH是Adobe公司开发的一种矢量图形动画技术,它允许设计师创建动态、交互式的...
但其在使用过程中也可能会遇到一些安全性和兼容性的问题,例如Iframe嵌入Excel Services页面时出现的“此内容不能显示在一个框架中”的报错。为了解决这一问题,我们需要深入了解相关知识点,包括Iframe嵌入、点击...
在提供的"VerColHeader"文件中,可能包含了实现上述功能的示例代码或配置文件。通过查看这些文件,你可以更具体地了解如何在实际项目中应用这些技术。记住,理解并掌握这些知识点将帮助你更好地利用DevExpress ...
当响应即将写入标头时,执行一个侦听器。 安装 这是通过提供的模块。 使用完成 : $ npm install on-headers API var onHeaders = require ( 'on-headers' ) onHeaders(res,监听器) 当为res发出标题时,这将...
Chrome对于请求头和响应头的展示具有明确的规定,即控制台中只展示发送出去或刚接收到的路线。因此编辑后的请求链接,控制台的网络栏能够正常展示;而编辑后的响应分区由于不属于刚接收到的细分,所以从控制台上就...
以及引入了命令行工具 Appcmd.exe ,给 Web 服务器的日常管理、监视和配置提供了除图形接口外的另一种方式,更为简单、高效。 同Windows XP一样,在Windows Vista的默认设置下,IIS (Internet 信息服务) 7.0未予安装...