![](/img/trans.png)
[英]In node.js, how do I get the Content-Length header in response to http.get()?
[英]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的子集。
这是您的解决方案:将文件名音译为ASCII字符,以便在标头值中使用安全:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.