ActiveStorage和直接上传在开发中不起作用

时间:2018-11-07 09:16:57

标签: ruby-on-rails rails-activestorage

我正在尝试ActiveStorage,因为我想创建一个Rails应用程序,用户可以在其中直接上载到DigitalOcean空间。

但是,我已经遇到CSRF问题了。

我已经在我的storage.yml中声明了数字海洋:

unsigned long

我在do: service: S3 access_key_id: this_is_a_secret secret_access_key: this_is_also_a_secret region: ams3 bucket: this_is_also_a_secret endpoint: 'https://this_is_also_a_secret.ams3.digitaloceanspaces.com' 中选择了该存储服务

development.rb

并且我将aws gem添加到了Gemfile

config.active_storage.service = :do

我在我的JavaScript包中需要gem "aws-sdk-s3", require: false

,并且我在视图中添加了以下内容进行测试:

activestorage

提交表单时,activestorage.js库将启动。它调用= form_for(VideoUpload.first, url: "/") do |form| div = form.file_field :file, direct_upload: true div = form.submit("Send that file") ,由于缺少CSRF令牌,该库又抛出422。我检查了请求,控制器没有错。 HTTP标头中未设置CSRF令牌,http://127.0.0.1:3000/rails/active_storage/direct_uploads奇怪地设置为X-CSRF-Token

请求正文包含:undefined,因此此处也没有CSRF令牌。

但是指定输入文件元素的形式包含一个标记,因此我假设{"blob":{"filename":"9T6qqsA-png-wallpapers.jpg","content_type":"image/jpeg","byte_size":122990,"checksum":"gqU9VBgS9mmH7s45qHIbug=="}}会选择它。

我在这里想念什么? activestorage.js上的文档并不意味着JS端需要任何特殊的配置。

我正在使用Rails 5.2.1和Ruby 2.5.1

0 个答案:

没有答案