2012-02-07 17 views
4

私はAmazon S3を使用してユーザーのイメージをホスティングしています。私はそれらのすべてを公開することができます(つまり、Chrome/Firefox/IEのURLで画像にアクセスできることを意味します)、自分のコードで403 Forbidden例外が発生します。これは、サムネイルハンドラです(C#の、ASP.NET)403 Amazon S3で禁止されている問題

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

見つけました!長い研究の後で、私はそれが大文字と小文字を区別する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 
0

私はこれと同じ問題がありました。また、Cloudfrontディストリビューションを設定するときにroot fileオプションを指定しなかった場合にも起こります。

ルートファイルをindex.htmlに設定すると、すべてが美しく機能しました。

関連する問題