当前位置: 首页 > 面试题库 >

通过签名网址将文件放入Google Cloud Storage(GCS)

於子晋
2023-03-14
问题内容

我正在尝试使用“签名的URL”来访问文件/将文件上传到Google Cloud Storage(GCS)。

按照https://developers.google.com/storage/docs/accesscontrol#Signing-
Strings中
的说明进行操作

我做了什么:

  • 在Google Cloud Console中注册了“ Web应用程序”。
  • 使用注册的Web应用程序屏幕的“证书”部分中的“生成新密钥”生成新的私钥。
  • 创建了要签名的字符串,并使用该页面的“如何签名”部分提供的示例代码对其进行签名(对Java主程序的硬编码值进行了一些细微调整)。更新:为GcsSigner.java创建了要点。
  • 确保签名字符串是URL编码的。
  • 指定的HTTP标头:x-goog-api-version,x-goog-project-id,Content-Type。
  • 指定的网址参数:GoogleAccessId,签名,过期。
  • 使用Postman(Chrome扩展程序)模拟PUT请求。

但是,我仍然得到这个(状态:403禁止):

<?xml version='1.0' encoding='UTF-8'?>
<Error>
    <Code>SignatureDoesNotMatch</Code>
    <Message>The request signature we calculated does not match the signature you provided. Check your Google secret key and signing method.</Message>
    <StringToSign>PUT

text/plain
1384084959392
x-goog-api-version:2
x-goog-project-id:99999
/mybucket/myfile.txt</StringToSign>
</Error>

即使我根据“ StringToSign”中的值对字符串进行签名重试,我仍然会遇到相同的错误。

在这里阅读各种相关的帖子,但找不到任何解决方案,其中大部分是x-goog-api-version:1我使用版本2时引用的。

我想念什么?任何帮助将不胜感激。


问题答案:

最终设法使用签名的URL将文件放入Google Cloud Storage。这是通过创建一个简单的Java程序来模拟的:

  • Server 签名并将字符串编码为签名。
  • Uploader作为未经身份验证的用户,仅使用所提供的签名来提交PUT请求Server。浏览器是使用Apache的HTTP客户端库模拟的。

您可以在此处查看演示应用程序。

我真的不明白为什么当我通过Chrome的Postman扩展程序提交时它不起作用。



 类似资料:
  • 我尝试使用jarsigner通过以下命令对。apk文件进行签名:- C:\program files\java\jdk1.7.0_25\bin>jarsigner-keystore“C:\program files.android\debug.keystore”-storePass android-keypass android“C:\program files.android\androidca

  • 本文向大家介绍TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现,包括了TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现的使用技巧和注意事项,需要的朋友参考一下 TensorFlow官网给的cifar-10教程,是卷积神经网络入门的好例子,有时想直接拿这个模型来跑自己的数据,却发现他的数据类型不是常见的,我们一般获取的数据(图片)以文件夹分类存好,或者直接在文件名

  • 我有一个从AWS S3预先签署的上传网址上传视频文件。在邮递员上测试视频成功上传。然而,我得到一个403返回时,实施改造。我无法对此任务使用多部分上传。 服务调用: 上传: 我已经确保URL是正确的。内容类型标题也被添加,邮递员截图附后。得到403禁止错误 邮递员截图 我发现了这个相关的问题,但我仍然得到一个403。使用改造2 将文件上传到 AWS S3 预签名 URL 有什么建议吗?

  • 这里是我的node.js预签名URL的生成 那么我在URL生成或卷曲方面的问题在哪里呢?谢谢

  • 我尝试使用签名URL将文件上传到我的谷歌云存储。 我已经使用gsutil在我的bucket上设置了CORS参数 浏览器向Django后端发送ajax请求以获取签名URL Django后端向GCS发出请求,以便创建签名URL 签名的url将发送回浏览器。 我尝试在Ajax中使用此签名url将视频文件(内容类型=“video/mp4”)上载到GCS 对GCS返回状态代码200的请求 最后但并非最不重要

  • 问题内容: 我想创建一个用于编辑文本文件的简单程序(用Java),尤其是一个可以在文本文件中的任意位置插入任意文本的程序。此功能是我当前正在编写的一个较大程序的一部分。 阅读有关java.util.RandomAccessFile的描述,似乎在文件中间执行的任何写操作实际上都将覆盖现有内容。这是我要避免的副作用(如果可能)。 有没有简单的方法可以做到这一点? 提前致谢。 问题答案: 好的,这个问题