【问题标题】:403 Forbidden Issue in Amazon S3Amazon S3 中的 403 禁止问题
【发布时间】:2012-02-28 20:39:19
【问题描述】:

我正在使用 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或权限有问题,为什么我可以用浏览器看到图像?任何帮助,将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    找到了!经过长时间的研究,我发现这是因为 URL 字符串区分大小写。原来我在某处有一个 .toLower():

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

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

    【讨论】:

      【解决方案2】:

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

      EG:

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

      【讨论】:

        【解决方案3】:

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

        当我将根文件设置为 index.html 时,一切正常。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-01-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多