在我的asp.net MVC应用我的代码:是否需要对文件名进行网址编码?
response.ContentType = "application/octet-stream";
response.AddHeader("Content-Disposition", "attachment;filename=" +
HttpUtility.UrlEncode(attachment.FileName));
让所有的中国字符的URL编码为类似%5C%2D
。在IE/Chrome中,当用户下载文件时,他们会得到中文文件名(即IE/Chrome会自动对文件名进行网址解码)。但在Firefox中,他们会得到类似%5C%2D%0A.docx
的东西。现在我要删除代码中的HttpUtility.UrlEncode
。但在这之前,我想确认在这种情况下没有安全问题。你能给我一些想法吗?
编辑 Corbin的回答是正确的。但是,在删除了文件名的url编码之后,一些使用旧版本IE的用户将得到奇怪的杂乱文件名。最后我只为这些用户进行网址编码。
我在想这件事,因为头文件不会是正确的字符集,我只是希望有一些神奇的,因为规范我发现没有具体提到非ASCII字符。其中一天,我会停止假设。并希望在魔术:)。 – Corbin