gpt4 book ai didi

c# - 是否需要对文件名进行url编码?

转载 作者:行者123 更新时间:2023-11-30 19:47:04 25 4
gpt4 key购买 nike

在我的 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会自动对文件名进行url解码)。但在 Firefox 中,他们会得到类似于 %5C%2D%0A.docx 的内容。现在我要删除代码中的 HttpUtility.UrlEncode。但在这样做之前,我想确认在这种情况下不存在安全问题。你能给我一些想法吗?

编辑 Corbin 的回答是正确的。但是去掉文件名的url编码后,一些使用旧版IE的用户会得到奇怪的乱七八糟的文件名。最后我只为那些用户做 url-encode。

最佳答案

如果名称是 ASCII,则允许用引号引起来。

如果它是非 ASCII,那么你必须使用 RFC 2231 或 RFC 5987 或 RFC 2047 中定义的编码......当然,哪些浏览器支持其中哪些是一个有趣的游戏。 :(

如果您只是将原始的非 ASCII 字节粘贴到 header 中,对于大部分用户来说,它几乎肯定看起来像垃圾。

关于c# - 是否需要对文件名进行url编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7315034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com