OpenURI::HTTPError 403 Forbidden - 打开 S3 上存储的资产的回形针 URL(雾 gem)

Posted

技术标签:

【中文标题】OpenURI::HTTPError 403 Forbidden - 打开 S3 上存储的资产的回形针 URL(雾 gem)【英文标题】:OpenURI::HTTPError 403 Forbidden - open paperclip url for asset stored on S3 (fog gem) 【发布时间】:2013-06-23 19:10:15 【问题描述】:

我调用了我的文档控制器的下载操作,以便为客户端提供从 s3 检索到的可下载对象。然而,OpenURI 似乎无法解析已存储的 url 回形针。这个 URL 在浏览器中是可以访问的,没有任何问题,但是当试图在控制器中打开它时,我得到一个 403 Forbidden 错误。

documents_controller

  def download
    data = open(Document.find(params[:id]).upload.url)
    send_data data.read, :type => data.content_type, :x_sendfile => true
  end

一个示例网址是

"https://s3.amazonaws.com/mybucket/documents/1/Screen_Shot.png?1372238888"

错误 - OpenURI::HTTPError 403 Forbidden 打开 URL 时,在动作的第一行向上射击。 知道它可能是什么吗?

【问题讨论】:

【参考方案1】:

当 URL 不是字符串格式时,可能会发生 403 错误。在类似的邮件附件示例中使用字符串插值对我有用:

doc = order.document
attachments["Order.pdf"] = File.read(open("#doc"))

【讨论】:

【参考方案2】:

您可以尝试对我有用的另一件事:添加“用户代理”选项:

data = open(Document.find(params[:id]).upload.url, 'User-Agent' => 'ruby')

【讨论】:

以上是关于OpenURI::HTTPError 403 Forbidden - 打开 S3 上存储的资产的回形针 URL(雾 gem)的主要内容,如果未能解决你的问题,请参考以下文章

带有 AngularJS 的 Spring Boot 和 CSRF - Forbitten 403 -> 错误注销

将 macOS 从 Big Sur 升级到 Monterey 后,发布请求出现 403 禁止错误

Laravel (7) Resource Policies don't work with CamelCase, get a 403 for view policy (show in controll

常用HTTP状态码

Azure sql 数据库导出到存储 blob 失败

403错误怎么解决