Chrome与Edge浏览器从Content-Disposition头截断长文件名问题求助
Chrome与Edge浏览器从Content-Disposition头截断长文件名问题求助
各位大佬,我碰到个棘手的问题,想请大家帮忙分析下:
我在服务器上存了一个文件名长达254字符的文件,尝试下载时出现了奇怪的差异:
- 用Postman下载时,不管是响应头里的文件名,还是最终保存的文件名,都是完整的254字符,这个测试用的文件名是:
bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob123456_bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob123456_bob1234567bob1234567bob1234567bob1234567bob1234567.txt - 用Chrome浏览器直接访问URL下载时,文件名被截断成了177字符,变成了:
bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob123456_bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob.txt - 用Edge浏览器直接访问URL下载时,文件名被截断成了217字符,变成了:
bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob123456_bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob123456_bob1234567bob.txt
我的Angular应用里是通过window.open(<PATH>)来触发下载的,虽然下载后可以手动补全文件名,但我实在搞不懂为什么浏览器会自动截断——这个文件名里完全没有特殊字符啊。另外,直接用Chrome和Edge访问URL下载时,没法直观看到返回的响应头,但Postman里能明确看到完整的Content-Disposition响应头:attachment;filename=bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob123456_bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob1234567bob123456_bob1234567bob1234567bob1234567bob1234567bob1234567.txt
想请教大家:是不是我的响应头设置有问题?或者有没有什么办法能让浏览器保留完整的文件名呢?
备注:内容来源于stack exchange,提问作者DFW
相关产品推荐
相关产品推荐

