首页 > 解决方案 > 了解 Active Storage Direct 上传错误:`存储“File_1.jpeg”时出错。状态:0`

问题描述

我们的应用最近切换到通过 Rails Active Storage(在 Rails 5.2 中引入)直接上传到 S3。在大多数情况下,它工作正常,但我们注意到大约 2% 的时间会抛出错误。

到目前为止,我们已经看到了以下内容:

状态 0(主要是 Safari/Mobile Safari): Error storing "File_1.jpeg". Status: 0

状态 403: Error storing "File_1.jpeg". Status: 403

读取错误: Error reading "File_1.jpeg".

我想最后一个错误与文件本身无效或损坏有关。但是,我们不确定是什么导致了前两个错误。环顾四周,我注意到提到 CORS 设置不正确的帖子。但是,我们之前在 S3 上进行了一些配置更改,我也认为如果这是一个 CORS 问题,我们会更频繁地看到失败。这就是我们的 CORS 设置:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
    <AllowedOrigin>https://app.ourapp.com</AllowedOrigin>
    <AllowedMethod>PUT</AllowedMethod>
    <MaxAgeSeconds>3600</MaxAgeSeconds>
    <AllowedHeader>Origin</AllowedHeader>
    <AllowedHeader>Content-Type</AllowedHeader>
    <AllowedHeader>Content-MD5</AllowedHeader>
    <AllowedHeader>Content-Disposition</AllowedHeader>
</CORSRule>
</CORSConfiguration>

我们注意到在一次多次上传中,用户能够成功地将 12 个文件上传到活动存储,但有 1 个文件出错,状态为 0。文件本身没有损坏或其他任何东西。

任何线索有时可能导致直接上传片状?

标签: amazon-s3ruby-on-rails-5rails-activestorage

解决方案


以下对我有用:

[
    {
        "AllowedHeaders": [
            "Authorization"
        ],
        "AllowedMethods": [
            "GET"
        ],
        "AllowedOrigins": [
            "https://example.com"
        ],
        "ExposeHeaders": [],
        "MaxAgeSeconds": 3000
    },
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT"
        ],
        "AllowedOrigins": [
            "https://example.com"
        ],
        "ExposeHeaders": []
    }
]

从这里得到它。


推荐阅读