簡體   English   中英

使用jQuery文件上載到s3 rails應用程序時獲取403(禁止)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM