我正在使用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或权限有问题,为什么我可以用浏览器看到图像?任何帮助,将不胜感激。
答案 0 :(得分:3)
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时,一切都很顺利。