403 Amazon S3中的禁止问题

时间:2012-02-07 12:02:27

标签: amazon-s3 amazon http-status-code-403

我正在使用Amazon S3来托管用户的图像。虽然我将所有这些设置为公开(这意味着我可以通过Chrome / Firefox / IE中的URL访问图像),但我的代码中出现了403 Forbidden异常。它是一个缩略图处理程序(C#,ASP.NET)

string file = context.Request.QueryString[IMG_PARAM].Trim().ToLower().Replace("\\", "/");

      if (file.StartsWith("http") || file.StartsWith("https"))
      {
          using (System.Drawing.Image im = System.Drawing.Image.FromStream(WebRequest.Create(file).GetResponse().GetResponseStream()))
          using (System.Drawing.Image tn = this.CreateThumbnail(im))
          {
              tn.Save(context.Response.OutputStream, this._formatType);
          }
      }

例外来自这部分:

WebRequest.Create(file).GetResponse().GetResponseStream()

对我来说真的很奇怪,如果ACL或权限有问题,为什么我可以用浏览器看到图像?任何帮助,将不胜感激。

3 个答案:

答案 0 :(得分:3)

发现它!经过长时间的研究,我发现这是因为URL字符串是CASE SENSITIVE。结果我在某处有一个.toLower():

string file = context.Request.QueryString[IMG_PARAM].Trim().ToLower().Replace("\\", "/");

删除.toLower()后,问题就会解决。

答案 1 :(得分:2)

如果您使用CNAME访问Cloudfront CDN资源,我发现您也会收到此错误,但不要将这些CNAMES添加到AWS管理控制台中的分发设置。

EG:

cdn.yourdomain.com/js/your_script.js
rather than:
abc12345.cloudfront.net/js/your_script.js

答案 2 :(得分:0)

我有同样的问题。如果在配置Cloudfront分发时未指定root file选项,也会发生这种情况。

当我将我的根文件设置为index.html时,一切都很顺利。