gpt4 book ai didi

node.js - 谷歌云存储似乎忽略了客户提供的加密 key header

转载 作者:搜寻专家 更新时间:2023-10-31 23:59:40 25 4
gpt4 key购买 nike

我正在开展一个将图像存储在 Google Cloud Storage (GCS) 中的项目。我正在使用以下代码运行 NodeJS 服务器。文件被发送到带有签名 URL 的服务器,以便在 GCS 中进行可恢复上传。抛光整个文件后,服​​务器将请求定向到该地址。

那部分有效。但是,当我向指定 customer-supplied encryption key 的请求添加 header 时, GCS 忽略它们。上传完成,返回 200,并应用默认加密 key 。

当我尝试为 x-goog-encryption-algorithm 设置一个无效值时,我应该得到 400,它上传正常.

我应该非常接近,但是我缺少哪些 header 或配置被允许指定客户提供的加密 key ?

var crypto = require("crypto");
var fs = require("fs");
var Request = require("request");

var hashKey = function(key) {
var hash = crypto.createHash("sha256");
key = new Buffer(key);
hash.update(key);
return hash.digest("base64");
};

var GCS = module.exports = function GCS(env) {
// config contains the encryption key I'd like to specify.
this.config = env.config
};

GCS.prototype.upload = function (url, buffer) {
var self = this;
return new Promise(function(resolve, reject) {
var headers = {
"Content-Length": buffer.size,
"x-goog-encryption-algorithm": "AES256",
"x-goog-encryption-key": self.config.encryption.key,
"x-goog-encryption-key-sha256": hashKey(self.config.encryption.key)
};

var options = {
url: url,
method: "PUT",
headers: headers
};

fs.createReadStream(buffer.path)
.pipe(Request(options))
.on("error", function(e) {
self.logger.error("Failed to upload asset to slot.", e);
reject(e);
})
.on("response", function(res){
if (res.statusCode != 200) {
reject(new Error("Unexpected response code" + res));
}
resolve(res);
});
});
};

最佳答案

对于可续传上传,您需要发送与创建上传 URL 的初始 POST 相同的加密 header 。

关于node.js - 谷歌云存储似乎忽略了客户提供的加密 key header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39671742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com