我正在使用 Google Cloud Storage XML API 下载对象。如标准 HTTP 协议(protocol)和 as mentioned in Google's docs ,我可以指定 Range
header 来仅下载对象的特定范围。尝试多个对象(文件)后,API 总是返回完整的数据,我试图在单个请求中避免这种情况。我在 Node.js 上使用请求模块(如 bluebird 的 promise ),所以它看起来像这样:
var url = 'https://{bucket}.storage.googleapis.com/{object}'
.replace( '{bucket}', this._bucket )
.replace( '{object}', file.name );
var bearer = 'Bearer {t}'.replace( '{t}', this._token );
return request.getAsync( { url: url,
headers: {
'Authorization': bearer,
'Range': 'bytes=0-100',
}
})
响应数据成功返回,但不在我指定的范围内。它只是作为所有数据的完整 block 返回。我在请求配置中遗漏了某些内容吗?
我担心文件的内容长度会超过几 kb,在这种情况下可能会溢出内存。
最佳答案
如jterrace请注意,服务器忽略了我的 Ragne 请求,因为我拉取的对象小于 HTTP 规范阈值。当在较大的对象(例如 3mb)上测试它时,它在请求部分文件时工作得很好。返回的内容大小显示在 content-length
header 中。
关于node.js - Google 忽略 HTTP GET 的 "Range" header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34000891/