尝试通过 javascript 上传到已签名的 url 时出现权限问题
Permissions issue when trying to upload to a signed url via javascript
我们有一个服务器,可以为各种尺寸的图像生成签名 URL,并将它们交给客户端。 Web 客户端确实 javascript 天哪尝试将三个不同大小的相同图像上传到服务器提供的签名 URL。
<Error>
<Code>AccessDenied</Code>
<Message>Access denied.</Message>
<Details>Anonymous users does not have storage.objects.create access to bucket your-bucket-name.</Details>
</Error>
我们已经确认服务器代码可以成功上传图片,我们可以通过gsutil
以相同的权限上传。
这是我们非常尖锐的 JS 代码的一个片段,它试图将图像发送到 GCS。
var blobData = dataURItoBlob(canvas.toDataURL('image/png'));
jQuery.ajax({
type: 'PUT',
url: signedURL,
contentType: 'image/png',
processData: false,
data: blobData
})
希望有人能指出正确的方向!
响应是 401 还是 403?如果是 401,则查询参数可能由于某种原因不存在。这通常是因为您的程序可能不小心对 URL 进行了两次转义或以其他方式剥离了查询参数。检查 signedURL
.
的值
我们有一个服务器,可以为各种尺寸的图像生成签名 URL,并将它们交给客户端。 Web 客户端确实 javascript 天哪尝试将三个不同大小的相同图像上传到服务器提供的签名 URL。
<Error>
<Code>AccessDenied</Code>
<Message>Access denied.</Message>
<Details>Anonymous users does not have storage.objects.create access to bucket your-bucket-name.</Details>
</Error>
我们已经确认服务器代码可以成功上传图片,我们可以通过gsutil
以相同的权限上传。
这是我们非常尖锐的 JS 代码的一个片段,它试图将图像发送到 GCS。
var blobData = dataURItoBlob(canvas.toDataURL('image/png'));
jQuery.ajax({
type: 'PUT',
url: signedURL,
contentType: 'image/png',
processData: false,
data: blobData
})
希望有人能指出正确的方向!
响应是 401 还是 403?如果是 401,则查询参数可能由于某种原因不存在。这通常是因为您的程序可能不小心对 URL 进行了两次转义或以其他方式剥离了查询参数。检查 signedURL
.