Amazon S3 中的 403 禁止问题

5 amazon amazon-s3 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);
          }
      }
Run Code Online (Sandbox Code Playgroud)

异常来自这部分:

WebRequest.Create(file).GetResponse().GetResponseStream()
Run Code Online (Sandbox Code Playgroud)

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

小智 3

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

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

删除 .toLower() 后问题将得到解决。