为什么我的签名网址会收到错误403?

时间:2017-06-30 12:16:43

标签: javascript node.js google-cloud-platform google-cloud-storage

参考:https://googlecloudplatform.github.io/google-cloud-node/#/docs/storage/0.8.0/storage/file?method=getSignedUrl

这太奇怪了。我确实将我的服务帐户设置为具有存储对象的读取权限。

发生了什么事?

服务器

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]  + "')");
            }
        });

响应:

enter image description here

这是非常奇怪的,因为我认为签名的网址应该验证我的服务帐户发送的请求。

1 个答案:

答案 0 :(得分:1)

错误消息表示您的请求没有与之关联的任何身份验证。对于签名网址,这意味着未设置GoogleAccessId /签名/过期查询参数。

我调试打印图像阵列服务器端和客户端,以查看它丢失的位置。

修改:在这种情况下,&似乎在某处替换为&