我有以下问题:当客户端输入某个url时,它通过sendfile()从express接收一个.mp3文件。文件名在响应头中定义如下:

var fileName = (JSON.stringify(data.videoTitle).replace(/["']/g, "") + fileType);

headers: {
        'x-timestamp': Date.now(),
        'x-sent': true,
        'Content-type': 'application/octet-stream',
        'Content-Disposition': 'attachment; filename="' + fileName + '"'
    }

问题是文件名是从另一个网站获取的,我无法控制文件的标题是什么。到目前为止没有问题,但我碰巧发现一个文件包含字符_,这导致以下错误:
throw new TypeError('The header content contains invalid characters');

这很可能经常发生,因为有许多字符的标题可能不喜欢。在设置标题之前,是否有可能只保留有效字符?我认为白名单方法比黑名单方法更好,因为有几乎无限的可能性无效字符。
非常感谢你提前

最佳答案

下面是一个扩展的答案,它基本上告诉您只允许ascii或iso-8859-1的子集。
What character encoding should I use for a HTTP header?
下面是您的解决方案:将文件名转换为ascii字符,以确保在头值中使用时的安全:
https://www.npmjs.com/package/transliteration

关于javascript - 如何在JavaScript/node.js中的HTTP响应 header 中删除无效字符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45239228/

10-09 17:54
查看更多