php - 如何生成允许多种 HTTP 方法(此处为:GET 和 HEAD)的预签名 URI?
问题描述
我正在使用适用于 PHP 的 aws s3 sdk,您可以在其中轻松生成这样的预签名 URI:
$cmd = $my_S3Client->getCommand(
'GetObject', [
'Bucket' => 'my_bucket',
'Key' => 'a_file.txt']);
$a_presigned_uri = $my_S3Client
->createPresignedRequest($cmd, $lifespan);
->getUri();
而且这个 URI 只能通过 GET 来查询。
现在,如果我想创建一个可通过 HEAD 请求查询的预签名 URI,我只需要编写相同的代码,但要替换
->getCommand('GetObject', [...])
和
->getCommand('HeadObject', [...])
这两个都完美地工作。
但我希望能够生成一个预签名的 URI,我们可以在该 URI 上请求 GET 或 HEAD 请求。我不知道该怎么做。
(注意:所有这一切的目标是,我的客户可以在 URI 上执行 HEAD,以便在尝试下载文件之前知道文件的大小。因此,如果有可能生成一个预签名的 URI'GetObject'
和然后是一种让用户只从这个预签名的 URI 中检索文件大小的方法,我也很感激这个答案。)
解决方案
截至目前,您只能为一个对象和一个客户端方法生成预签名 URL。这可能会在未来改变,但谁知道什么时候。
推荐阅读
- arrays - Rails更新从数组属性中删除数字?
- android - 如何在反应原生 0.62.0 上调试模拟器/设备中的 android 应用程序?
- pandas - ValueError: 形状 (636,) 的 c 不能作为 x 大小为 636、y 大小为 636 的颜色序列
- java - 使用 Gradle 自动生成 gRPC 存根文件时出现问题
- google-app-engine - Next JS 谷歌云应用引擎 SSL/HTTPS
- sharepoint - 使用 PnPjs 和 .pdfConversionUrl 在 Sharepoint Online 中将 PPTX 导出为 PDF
- git - Git stash -u 挂在特定的仓库上
- flutter - Flutter:如何防止在调试控制台中打印异常?
- android - 当 Android 需要内存并杀死您的应用程序时,如何保留数据?
- android - FlutterPluginBinding.flutterEngine 已弃用