URL编码的空间在IE11中使用filename *的Content-Disposition标头中不起作用?

时间:2015-03-23 11:00:14

标签: java internet-explorer servlets http-headers specifications

我正在尝试将文件传送到浏览器中,文件名中可能包含非ASCII字符,我一直在使用Content-Disposition标题来告诉浏览器所需的文件名在用户想要保存文件时使用。

我查看了RFC 6266我看到filename*的使用情况。 因此,作为测试,我在Java servlet中设置了以下标头(其中respHttpServletResponse):

resp.setHeader("Content-Disposition", "inline; filename=test.png; filename*=utf-8''test%20x.png");

似乎所有“现代”浏览器现在都理解这一点并支持filename*,并且更喜欢它而不是filename的值集。我用阿拉伯字符试过它,它们在最新的Chrome和Firefox版本以及IE11中运行良好。但是:与其他浏览器不同,IE似乎不理解%20。当我尝试保存文件时,文件名为test%20x.png而不是test x.png

之前有没有遇到过这个?这是IE漏洞吗?如果是这样,有解决方法吗? (我可以用下划线替换空格,但也许我不需要。)

也许我在编码时做错了,或者可能与Java Servlet环境有关。 (我对此表示怀疑,但无论如何我都将这个问题标记为Java Servlet。) 如果有必要,我可以提供有关servlet如何传递文件的更多详细信息,但也许有人在不同的环境中也可以看到IE。

0 个答案:

没有答案