- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 signed URLs 将文件直接从浏览器上传到 GCS 。我正在从 App Engine 标准 PHP 应用程序生成 v4
签名 URL,这似乎工作正常。问题是,当我尝试 PUT
到该 URL 时,我得到一个 403
,其中包含以下 XML 响应:
<?xml version='1.0' encoding='UTF-8'?>
<Error>
<Code>AccessDenied</Code>
<Message>Access denied.</Message>
<Details>Anonymous caller does not have storage.objects.create access to <bucket-name>/some-object.txt.</Details>
</Error>
我的应用引擎服务帐户具有Service Account Token Creator
,它支持创建 URL。
我已在存储桶上启用 CORS,以接受 PUT
到 *
,这使我能够到达现在的位置。
我已从 v2
网址切换到 v4
,因为 Go SDK 上的问题表明这是一个问题。
我正在使用 PHP Google Cloud Library 生成签名 URL,如下所示:
$storage = new StorageClient();
$bucket = $storage->bucket('<bucket-name>');
$object = $bucket->object('some-object.txt');
$url = $object->signedUploadUrl(new \DateTime('tomorrow'), ['version' => 'v4']);
我尝试将服务帐户添加到存储桶的权限中,并添加Storage Object Admin
、Storage Object Creator
等,但似乎没有什么可以让我克服这个403
(除了向 allUsers
开放)。
在 this文章说的是
In addition, within Cloud Storage, you need to grant the following permissions to generate a Signed URL.
storage.buckets.get
storage.objects.create
storage.objects.delete
但我就是不知道需要将它们添加到哪个角色。
此时,我认为有两种可能性之一:
allUsers
显然是错误的)?已解决:
我的实现存在一些问题:
signedUploadUrl
不适合直接 PUT
。为了解决这个问题,我需要使用 beginSignedUploadSession
Storage Object Creator
。不过,它已添加到 GAE 默认服务帐户中,因为它是项目编辑器
Service Account Token Creator
需要显式添加到服务帐户,因为 Project Editor
似乎没有涵盖它。const url='{{ upload_url }}';
,但是 Twig 会自动对变量进行 HTML 编码,因此这会破坏 URL,相反,我需要使用{{ upload_url|raw }}
。这种损坏的格式是该消息包含匿名调用者
最佳答案
signedUploadUrl
为 POST HTTP 方法创建 URL(请参阅 https://github.com/googleapis/google-cloud-php/blob/master/Storage/src/StorageObject.php 处的库源代码)。您正在使用该签名 URL 进行 PUT 请求,因此不允许该请求。错误消息并未表明这是问题所在,但我认为这就是问题所在。
您可以了解如何通过 POST 上传文件,或为 PUT 创建签名 URL。我已经用 Python 完成了后者,但我没有找到使用这个库来完成此操作的方法。我不是 PHP 程序员,所以我可能会错过它。
或者您可以创建自己的代码来为 PUT 创建签名 URL,以库代码为例。要获得完全正确的签名 URL 极其困难,并且创建自己的代码可能会令人沮丧。这是给我用 Python 编写的。
关于google-app-engine - 尝试使用签名 URL 上传到 GCS 时收到 403 "Anonymous caller does not have storage.objects.get access",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57333985/
const example = () => new Promise((resolve) => { resolve(); console.log('1'); } ) example().
我正在尝试制作一个天气应用程序,并且我正在使用天气 API 来获取信息,但是当我尝试解析 JSON 数据时出现此错误: SyntaxError: Unexpected end of JSON inpu
我尝试编写一个函数来更改文本的颜色,但出现错误。我想知道如何解决这个问题。 function change() { var colour = prompt("What's your favourite
所以我对我正在处理的这段代码有疑问。我一直在使用在下面的链接中找到的聊天功能。当我将它集成到我的应用程序中使用时,它工作得很好,尽管我在修改它时遇到了麻烦。然而,为了为我的网站创建用户历史记录功能,我
我在 JSON.parse() 中出错,我有 .php 文件,其中包含从数据库检索数据的方法和 .js 文件,用于自动完成功能,我的 .php 文件以字符串形式返回数据,我需要将其转换为使用 JSON
在java中这是有效的 new Thread(new Runnable() { public void run() { for(in
该网站如何设法将引荐来源网址清空。所有其他引用者消隐服务似乎只是隐藏引用者。然而,这成功地让谷歌分析相信用户在网站中输入了内容。 我似乎无法弄清楚他们是如何做到的。 例如:http://www.ano
我正在查看这行代码 options?: { name?: string, async?: boolean }。 { name?: string, async?: boolean } 类型的正确术语是什
以下是 Javascript 考试的练习题和答案。 我很困惑,因为我最初的 react 是选择 B。我知道 D 也是正确的,但是当我参加定时考试时,如果我发现我认为是正确的答案,有时我会停止阅读其余的
当我遍历dom ..时,我在浏览器控制台日志中收到一条错误消息null at HTMLDivElement.。HTMLDivElement. 是什么意思? 浏览器 Google Chrome浏览器 图
这个问题已经有答案了: When should I use arrow functions in ECMAScript 6? (9 个回答) 已关闭 6 年前。 我已经看到了这两种类型的代码,我想知道
我创建了一项 WCF 服务并将其部署在服务器上。当我浏览此服务时,它会通过 ?wsdl URL 给出积极响应。现在我正在尝试通过 WCF 测试客户端测试该服务。它显示了正确的元数据。但是当我尝试从服务
如何阻止匿名用户在 gerrit 中查看我的项目事件。我已经用谷歌搜索了足够多的内容,但找不到所谓的项目访问控制列表的确切文件。 最佳答案 如果你想禁止匿名用户浏览/读取/搜索某个项目的所有变更,只需
就在今天,我需要一种在不同对象之间传递函数的方法。我很快了解到,你不能直接在 Java 中执行此操作,但你可以传递一个显然称为“匿名内部类”的实例,如下所示: 定义类: interface MyCal
留言簿的PHP代码如下: prepare('INSERT INTO comments(`author`, `comment`) VALUES(:author, :comment)'); $st
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
是否可以在不知道其类名的情况下将数据表转换为 ienumerable。 我的要求是转换表格 First | Last -------------- john | mcgill clara | lin
如何使用 Anonym 函数删除事件监听器,使用 removeEventListener(); document.getElementById("object").onclick = function
我在我的 Node 服务器上运行以下 psql: SELECT json_data.key AS id, json_data.value::int AS version FROM players.se
我想使用完整日历让用户创建工作日(周一至周日,如果可能的话,还有节假日)的开放时间。 fullcalendar 已经做了什么,但它不是针对特定的一周,所以它不应该有日期。那么问题来了: 有什么想法可以
我是一名优秀的程序员,十分优秀!