我正在使用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网站托管时,字符串来自存储分区属性上设置的错误文档。
我也尝试过直接使用值区网址进行访问
http://.s3.amazonaws.com/
并返回相同的结果,除了我得到一个XML文档而不是错误文档
我该如何解决这个问题?
当用户无权列出存储桶内容时,S3返回403而不是404。
如果查询一个对象并收到404,则说明该对象不存在。这是您不知道是否没有权限列出存储桶内容的信息,因此S3只是告诉您您正在尝试执行不允许执行的操作,而不是告诉您它不存在。 。当您得到403而不是404时,您将无法知道您所请求的对象不存在。它可能不存在或可能存在,并且您只是没有访问权限。您无法确切知道,因此不会绕过安全性。
我相信有权访问存储桶内容列表的任何人都将获得404而不是403。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句