【发布时间】:2017-07-01 04:56:29
【问题描述】:
这非常奇怪。我确实将我的服务帐户设置为具有存储对象的读取权限。
发生了什么事?
服务器:
snapshot.forEach(function(childSnapshot){
titleArray.push(childSnapshot.val().title);
usernameArray.push(childSnapshot.val().username);
keyArray.push(childSnapshot.key);
var file = bucket.file(childSnapshot.val().image);
var config = {
action: 'read',
expires: Date.now() + 10000,
contentType: 'image/png'
};
file.getSignedUrl(config, function(err, url) {
if (err) {
console.error(err);
return;
}
imageArray.push(url);
if (imageArray.length == 9) {
res.render("home", {keyArray: keyArray, titleArray: titleArray, usernameArray: usernameArray, imageArray: imageArray});
}
});
});
客户:
$(".homeImage").each(function(i) {
var row = $(this)
row.attr('id', i);
if (i == 4) {
} else {
$("#"+i).css('background-image', "url('" + imageArray[i] + "')");
}
});
回复:
这非常奇怪,因为我认为签名 URL 应该验证我的请求是由我的服务帐户发送的。
【问题讨论】:
-
你看到的结果是什么?
-
对不起,我应该澄清一下,错误响应的正文是什么?通常有一些带有更多细节的 XML。
-
@royalpeasantry 是的。它说不允许匿名用户访问此资源。这真的非常奇怪,因为我已经授权我的服务帐户访问我的存储桶对象,并且我正在使用应该提供某种身份验证的签名 url。
-
@royalpeasantry 我用截图编辑了我的问题。
-
错误消息暗示您的请求没有任何关联的身份验证。对于签名 URL,这意味着未设置 GoogleAccessId/Signature/Expires 查询参数。我会调试打印图像阵列服务器端和客户端,看看它在哪里丢失了。
标签: javascript node.js google-cloud-platform google-cloud-storage