ruby-on-rails 主动存储:未捕获错误:直接上传失败:为“example.png”创建Blob时出错,状态:500,潜在CORS错误?

hsgswve4  于 2023-04-22  发布在  Ruby
关注(0)|答案(1)|浏览(84)

我最近在我的投资组合网站上为我的博客添加了富文本功能,其中大部分功能都很好(我遵循了GoRails教程,因为懒惰)。

我面临的问题是,图像上传在开发中有效,而在生产中无效。

我正在使用Active-storage rails指南上详细说明的S3 bucket,通过Heroku托管上述生产组合。我有理由怀疑CORS错误,但我似乎无法修复它。我怀疑这是因为在开发过程中发生了同样的错误,直到我修改了CORS权限。然而,我可能是错的,因为我对Rails(7)非常陌生。
下面是尽可能多的细节,我可以认为添加,详细说明问题。
S3 CORS权限:

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "PUT"
        ],
        "AllowedOrigins": [
            "http://127.0.0.1:3000",
            "http://localhost:3000",
            "https://jpgiodevelopments.com",
            "https://www.jpgiodevelopments.com",
            "https://my-rorportfolio.herokuapp.com"
        ],
        "ExposeHeaders": [
            "Origin",
            "Content-Type",
            "Content-MD5",
            "Content-Disposition"
        ],
        "MaxAgeSeconds": 3600
    }
]

Storage.yml

test:
  service: Disk
  root: <%= Rails.root.join("tmp/storage") %>

local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

# Use bin/rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
amazon:
   service: S3
   access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
   secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
   region: eu-north-1
   bucket: rorportbucket
   public: true

HEROKU日志(V长)


[

网页错误

请放心,我已经在production.rb和development.rb中包含了以下内容:

config.active_storage.service = :amazon

我所尝试的...

1.在开发环境中也遇到了同样的问题,我在S3 Bucket中的CORS权限上花了很大力气,但与开发环境不同,这个权限似乎不起作用,我在生产组合的头部中交叉检查了来源,但我不能100%确定,因为CORS对我来说是全新的(实际上web-dev也是如此:/)
**我期望:**对于活动存储直接上传工作,在我的S3存储桶上查看它,并且我的博客应用程序将上传存储在博客文章中。不幸的是,这并没有发生,就像它在开发环境中一样。
2.查了一下,我确保尽可能地将所有依赖项添加到我的Heroku应用中。我想既然它引发了一个blob错误,并且vips是过去的依赖问题,我会覆盖所有(已知)基础并安装所有我能想到的。这包括运行以下内容:

Rails db:migrate
Rails active_storage:install

以及通过Aptfile构建包安装vips;

libglib2.0-0
libglib2.0-dev
libpoppler-glib8

并通过以下方式将其添加到生产和开发环境中

Rails.application.config.active_storage.variant_processor = :vips

**我期望:**对于活动存储直接上传工作,查看它在我的S3桶和我的博客应用程序有一个上传存储在博客文章作为博客创建被修复的结果.尽管验证安装的贵宾,什么都没有发生哈哈!

qpgpyjmq

qpgpyjmq1#

**修复被发现!**这是使用凭据.dig与正确键入的密钥和一个新的良好设置的s3桶.我转移到使用Heroku ENV配置变量.配置变量没有工作,因为他们在那里采取太字面的access_key_id = ENV['EXAMPLE_KEY_ID']而不是'access_key_id = example actual key'.我切换到凭据.dig和重新键入一切,包括设置和新的桶,嘿,突然!原来这只是愚蠢的CORS设置哈哈!

相关问题