这是一个脑筋急转弯问题,我实际上知道答案。我悬赏它,因为它代表了一个有价值的 Node 编程安全提示(这是第一个提示)。
- 提示 2:在 HTTP 请求中,“Content-Length”标头字段的单位是什么?
我在用着
var knox = require('knox');
var s3 = knox.createClient({
key: ...,
secret: ...,
bucket: ...
});
// The bug is below:
var stringVal = JSON.stringify(<2d javascript array from a large spreadsheet>)
var req = s3.put(path + filename, {
'Content-Length': stringVal.length,
'Content-Type': 'application/json'
});
req.end(stringVal);
结果上传被截断或以其他方式损坏。我们有stringVal.length === 322889
,并且生成的 S3 项目大小与之匹配。但是下载和重新加载文件会产生一个长度为的字符串322140
。在尝试 JSON.parse 字符串(可预测地)导致语法错误之前,不会出现任何错误。
这是怎么回事?