对于存储桶中不存在的密钥,如何让 S3 存储桶返回 404(而不是 403)/

2023-12-11

我正在使用 S3 来存储一些业务关键文档。我希望存储桶在尝试访问存储桶中不存在的对象时返回 404 状态代码。

然而,我发现它不断返回我“403

以下是使用 S3 网站 URL 的会话示例。

> GET /foobar.txt HTTP/1.1
> User-Agent: curl/7.21.6 (x86_64-pc-linux-gnu) libcurl/7.21.6 OpenSSL/1.0.0e zlib/1.2.3.4 libidn/1.22 librtmp/2.3
> Host: <bucketname>.s3-website-us-east-1.amazonaws.com
> Accept: */*
> 
< HTTP/1.1 403 Forbidden
< Last-Modified: Mon, 09 Sep 2013 19:10:28 GMT
< ETag: "14e13b81b3ce5b129d1f206b3e514885"
< x-amz-error-code: AccessDenied
< x-amz-error-message: Access Denied
< x-amz-request-id: <snip>
< x-amz-id-2: <snip>
< Content-Type: text/html
< Content-Length: 11
< Date: Thu, 26 Sep 2013 20:01:45 GMT
< Server: AmazonS3
< 
Not found!

请注意,“未找到!”字符串来自启用 S3 网站托管时在存储桶属性上设置的错误文档。

我也尝试过直接使用bucket url进行访问

http://.s3.amazonaws.com/

返回的结果相同,只是我得到的是 XML 文档,而不是错误文档

我该如何解决这个问题?


当用户无权列出存储桶内容时,S3 返回 403 而不是 404。

如果您查询一个对象并收到 404,那么您就知道该对象不存在。如果您没有列出存储桶内容的权限,那么您不应该知道这些信息,因此 S3 不会告诉您该存储桶不存在,而是会告诉您您正在尝试执行不允许执行的操作。当您收到 403 而不是 404 时,您无法知道您请求的对象不存在。它可能不存在,也可能存在但您没有访问它的权限。您无法确定,因此不会绕过任何安全措施。

我相信任何有权列出存储桶内容的人都会得到 404 而不是 403。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于存储桶中不存在的密钥,如何让 S3 存储桶返回 404(而不是 403)/ 的相关文章

随机推荐

  • 保存/恢复打印机 DevModes - wxPython / win32print

    到目前为止 我已经找到了两种不同的方法来从 wxPython 用户界面访问我认为等效版本的打印机 DevMode window wx GetTopLevelWindows 0 GetHandle name self itemMap devi
  • 交换浮点数和双精度数的“字节顺序”

    我想切换 float 和 double 值的 字节顺序 它可以通过执行以下操作来正常工作 float const v 1 f swap reinterpret cast lt std uint32 t const gt v 是否存在更好的方
  • 如何防止用户在ajax请求中通过firebug更改变量

    我允许我的用户收藏更新或论坛主题 因此 当用户尝试收藏其中之一时 我将通过 Ajax 2 发送内容 item id 更新或主题 作为 id 例如 1321313213 其类型 更新 或 主题 作为字符串 然而 假设有人尝试收藏某个更新 且
  • 清除Android ListView

    我有一个列表视图 我想动态更改列表视图的内容 我使用了 adapter notifyDataSetChanged 更改内容 我也尝试将列表视图的适配器设置为 null 但仍然得到相同的结果 它令人耳目一新 但不会清除列表视图 而是将其附加到
  • 从表中删除数据后Oracle释放空间

    我最近从数据库中的一些表中删除了大量数据 现在我希望释放该数据所占用的空间 之后我想重建索引 释放空间的最佳方法是什么 释放空间 是什么意思 当您删除数据时 块中的空间被释放 该空间现在可用于在您从中删除数据的表中进行后续插入 或更新 这通
  • Birt mongodb 参数

    我安装了 Birt 4 3 最新 作为 Eclipse 插件 JDBC 作为数据源非常适合我 我在查询中定义了一个参数 我可以通过报表设计在数据集中定义参数并将其链接到报表参数 但我对 MongoDB 有多个问题 1 当我打开 编辑数据集
  • 已声明但未设置的变量计算结果为 true?

    我正在用下面的代码做一个简单的计算器 现在它执行得很完美 然而 当我试图改变现状时 却行不通 我用了BOOL program检查是否继续询问该人的输入或完成该程序 如果我改变表达方式while声明只是 program 并改变YES NO i
  • CSS - 仅使用水平滚动条

    仅当 div 的内容长于宽度值时 我才需要使用水平滚动条 所以我写 viewgallerylist width 920px float left padding top 20px height 120px border bottom 1px
  • 如何正确处理从右到左的文本输入字段?

    我正在研究多语言布局 让我担心的是 如何正确处理文本输入 我已经建立了一个JSFiddle解释我的问题 如果我只是添加dir rtl 单词从右到左出现 但不是每个字符 如果我添加从右到左的 CSS 样式 包含的数字也会翻转 我如何组合数字和
  • 如何处理catch块中的异常?

    我正在尝试找到处理异常的理想方法 我用谷歌搜索并读到我应该放try catch in the catch块也可以处理 但是如果嵌套块本身发生任何异常怎么办 try int a 10 int b 0 int c a b Console Wri
  • OpenCV createsamples - 无效的背景描述文件

    我在我的OPENCV ROOT文件夹并在 Win x64 中运行以下命令 opencv createsamples bgcolor 0 bgthresh 0 maxxangle 1 1 maxyangle 1 1 maxzangle 0 5
  • 为什么在散列中向数组追加一个值也会修改分配它的其他变量?

    示例代码 hash of array a b hash of array c hash of array b a lt lt 1 puts b gt a 1 puts c gt a 1 为什么两个变量的数组中都有 1 我只将它附加到变量上b
  • 存储函数时如何传递预定义参数

    是否可以存储带有预定义参数的函数以供另一个函数调用 例如 def function num print num trigger function store function 1 trigger prints 1 trigger funct
  • 如何为 tts 创建自定义 sapi 语音

    我正在开发一个项目 需要为我的应用程序创建自定义语音引擎 我见过类似 TTS Builder 的东西 但是有人了解 TTS Builder 等应用程序本身是如何开发的吗 SAPI引擎背后的东西是什么 它们是如何工作的 一个人如何构建自己的
  • 如何使用AWS Lambda部署大型Python包?

    我需要一些建议 我使用 Tensorflow 训练了一个图像分类器 并希望使用它将其部署到 AWS Lambda无服务器 该目录包括模型 一些Python模块 包括tensorflow和numpy 以及Python代码 解压前完整文件夹的大
  • 如何在C++中获得不同向量的向量

    我想要一个 C 表示的表 如下所示 0 1 2 1 1 0 a 2 2 0 b 3 3 0 c 列的类型必须从int double or string在运行时 用 C 表达它的最佳方式是什么 附录 我真正的问题 我想要一个数据库表的列式表示
  • 在 DispatchTimer 中使用消息对话框时,Windows 8 应用程序中出现“访问被拒绝。(HRESULT 异常:0x80070005 (E_ACCESSDENIED))”?

    我正在尝试在调度计时器中使用消息对话框来在时间完成时更改用户 但有时会出现以下错误 访问被拒绝 HRESULT 异常 0x80070005 E ACCESSDENIED 如何解决这个问题 Code public DetailPage tim
  • 我们如何找到正在运行的Windows服务的进程ID?

    我正在寻找一种查找特定 Windows 服务的进程 ID 的好方法 特别是 我需要找到 Windows 附带的默认 WebClient 服务的 pid 它作为 svchost exe 进程中的 本地服务 托管 我发现当我使用 netstat
  • 如何生成在 1×41 向量中定位 20 个 -1 值的每个排列?

    我编写了不同的代码来生成 1 和减 1 的不同排列 它们适用于小尺寸矩阵 例如 S 1 1 1 1 1 1 1 1 P unique perms S rows 产生 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  • 对于存储桶中不存在的密钥,如何让 S3 存储桶返回 404(而不是 403)/

    我正在使用 S3 来存储一些业务关键文档 我希望存储桶在尝试访问存储桶中不存在的对象时返回 404 状态代码 然而 我发现它不断返回我 403 以下是使用 S3 网站 URL 的会话示例 gt GET foobar txt HTTP 1 1