繁体   English   中英

如何删除JavaScript / node.js中HTTP响应头中的无效字符?

[英]How to remove invalid characters in an HTTP response header in JavaScript/node.js?

我有以下问题:当客户端输入某个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 + '"'
    }

问题是fileName是从另一个网站获取的,我无法控制文件的标题。 到目前为止它没有问题,但只是在我身上发现一个文件包含字符ú导致以下错误:

throw new TypeError('The header content contains invalid characters');

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

非常感谢你提前

这是一个扩展的答案,它基本上告诉您只允许ASCII或ISO-8859-1的子集。

我应该为HTTP标头使用什么字符编码?

这是您的解决方案:将文件名音译为ASCII字符,以便在标头值中使用安全:

https://www.npmjs.com/package/transliteration

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM