![](/img/trans.png)
[英]Rails 6 Amazon S3 Error POST 403 (Forbidden) using s3_direct_upload gem
[英]Get 403 (forbidden) when used jQuery File Upload to s3 rails app
我想將圖像上傳到s3。 為此,我關注http://railscasts.com/episodes/383-uploading-to-amazon-s3
我可以將單個圖像上傳到s3,但是現在我正在使用jquery文件上傳來上傳多個文件。
當我嘗試上傳文件時,它給了我403(禁止訪問)。
我需要做什么來修復它?
感謝任何可以提前幫助的人!
您需要檢查S3存儲桶的權限。 它應該允許“上傳/刪除”。
此外,您應該設置CORS配置(CORS:跨域資源共享)(對於您的存儲桶,轉到“屬性==>權限”,然后單擊“添加CORS配置”)
該文件應具有以下內容:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://localhost:3000</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
在這里,它允許我的本地主機將文件發布到此存儲桶。
在測試時,您可以使用非常廣泛的CORS配置
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
在CORS旁邊,可能會出現403,因為設置了錯誤的contentType。
服務器端:
GeneratePresignedUrlRequest rq = new GeneratePresignedUrlRequest(bucketName, objectKey);
rq.setContentType("video/*");
...
客戶端:
$.ajax({
url:upUrl,
type: "PUT",
data: file,
contentType:'video/*',
cache: false,
processData:false,
success: function (data) {
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.