不同浏览器使用Content-disposition时filename带空格的处理方式不同
最近在做项目中遇到一个问题,纠结了好久才找到原因。起因:通过MIME的扩展Content-disposition来实现在客户端保存附加文件(快捷方式)。问题:在chrome和IE8+下一切都很和谐,浏览器会弹出保存文件的提示,保存名字和类型都对;但在一向很标准的firefox下文件名保存成了第一个空格之前的单词,文件类型也变成了application/octet-stream,基本上没有文件可以打开这个无后缀名的文件。
(IE11)
(firefox)
(chrome)
查了半天终于发现原来是后台对于response header里面的filename没有双引号包起来,而是直接Content-Disposition:attachment; filename=Super Mario Flash 2.0.url。这样的话在firefox中就会把文件名解析成Super,后缀名也没了。解决方法也很简单,后台写header的时候把filename用双引号包起来就可以了:Content-Disposition:attachment; filename="Super Mario Flash 2.0.url"。另一方面,如果用双引号把文件名包起来,对于保存文件时空格解析成%20的问题也会很大程度上避免了。
参考文章:
1、Filenames with spaces are truncated upon download
2、content-disposition filename cut (truncated) at space
3、Content-Disposition filename with space and without extension is not decoded.
4、content-disposition attachment filename 在Firefox和IE中得到不同的结果
不同浏览器使用Content-disposition时filename带空格的处理方式不同的更多相关文章
- 如何让浏览器在访问链接时不要带上referer
function open_without_referrer(link){ document.body.appendChild(document.createElement('iframe')).sr ...
- find + xargs + cp 遇到文件名中带空格如何处理
一,需求为查询文件名为ZRSH开头的时间为7月至今的所有文件并打包 1.首先想到的就是find + xargs + cp 格式.. find 2016073* -type f -name *ZRS ...
- 去掉chrome浏览器中input获得焦点时的带颜色边框呢
可以设置表单控件的outline属性为none值, 来去掉Chrome浏览器中输入框以及其它表单控件获得焦点时的带颜色边框. css代码如下: input{outline:none}
- 在基于vue的webpack脚手架开发中使用了代理转发,结果浏览器发出的请求中不带cookie导致登录时总是session失效怎么办?
环境: 有2个业务接口需要转发到82的服务器上: ../user/getCode.do ../user/doLogin.do 现象: 使用上述的 ...
- 转载: 正确处理浏览器在下载文件时HTTP头的编码问题(Content-Disposition)
最近在做一个下载工具时,发现CSDN上的资源下载时竟然没有被拦截到,经过分析,终于有了一个发现,解决了我之前做文件下载时的乱码问题,所以转载这篇释疑文章,希望有人可以看到,可以从中得到帮助,也用来备忘 ...
- C# 版本的 计时器类:精确到微秒 秒后保留一位小数 支持年月日时分秒带单位的输出
class TimeCount { // 临时变量,存放当前类能表示的最大年份值 ; /// <summary> /// 获取毫秒能表示的最大年份数 /// </summary> ...
- 去除Xcode6创建工程时自带的storyboard
去除Xcode6创建工程时自带的storyboard 1. 删除storyboard文件,并在setting里面清空加载storyboard: 2. 导入ViewController到appDeleg ...
- SVN解决创建文件时不带锁
解决创建文件时不带锁 C:\Documents and Settings\你的用户名\Application Data\Subversion 找到上面的用户路径 打开config添加 ### ...
- IE浏览器下载文件保存时提示:“你没有权限在此位置中保存文件”解决办法
E浏览器下载文件保存时提示 解决办法: 1.Win + R,打开运行命令,输入gpedit.msc,如图所示 2.打开计算机本地组策略编辑器:选择计算机配置-windows设置-安全设置-本地策略-安 ...
随机推荐
- weak属性需要在dealloc中置nil么?
出题者简介: 孙源(sunnyxx),目前就职于百度 整理者简介:陈奕龙(子循),目前就职于滴滴出行. 转载者:豆电雨(starain)微信:doudianyu 不需要. 在ARC环境无论是强指针还是 ...
- [置顶] SpecDD系列:6个确保您执行“充分”QA测试的技巧
确保团队执行 “足够的” 测试覆盖面是非常困难的,尤其是对敏捷开发团队来说.对于初学者而言,一个开发Sprint中要完成多少的质量保证工作才够呢?我们知道,敏捷的标准是在开发Sprint结束的时候要完 ...
- 你真的理解Java的this和super吗?
你不知道的this 很多介绍java的书籍都说this指该对象本身.我们来看下面代码: class Base{ private int i = 3; public Base() { this.disp ...
- intent和intentfilter
intent 和intent Filters startActivity()的机制 用到了IBinder ipc 用到了进程间通讯机制 activity有四种LaunchMode 当startActi ...
- MyBatis报错
1.错误描写叙述 2014-11-2 15:03:11 org.apache.catalina.core.StandardEngine start 信息: Starting Servlet Engin ...
- 4道过滤菜鸟的iOS面试题
网上已经有很多针对各种知识点的面试题,面试时有些人未必真正理解也能通过背题看上去很懂.我自己总结了4道面试题,好快速的判断这个人是否是一个合格的工程师,欢迎大家点评. 1.struct和class的区 ...
- Python之路,Day23-----暂无正在更新中
Python之路,Day23-----暂无正在更新中
- JavaScript设计模式之观察者模式(学习笔记)
设计模式(Design Pattern)对于软件开发来说其重要性不言而喻,代码可复用.可维护.可扩展一直都是软件工程中的追求!对于我一个学javascript的人来说,理解设计模式似乎有些困难,对仅切 ...
- Windows上帝模式
在桌面新建一个文件夹 按F2重命名为 GodMode.{ED7BA470-8E54-465E-825C-99712043E01C} 完成
- Xcode7设置生成DSYM出现大量警告
看图,设置成这样就会出现大量的警告,解决方法如下: 将debug information format 更改为:DWARF即可