OpenURI::HTTPError 403 Forbidden - 在 S3 上存储的资产 (fog gem) 的 paperclip url 打开失败

7

我有一个对文档控制器的调用,调用下载操作来为客户提供从s3检索的可下载对象。然而,OpenURI似乎在解析paperclip存储的url时遇到了问题。这个URL在浏览器中可以访问,但是当尝试在控制器中打开它时,我得到了403禁止访问的错误。

documents_controller

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

一个示例URL可能是:
"https://s3.amazonaws.com/mybucket/documents/1/Screen_Shot.png?1372238888"

错误 - OpenURI::HTTPError 403 Forbidden 在打开URL时,动作的第一行就出现了这个错误。 你有什么想法吗?

2个回答

4
当URL不是字符串格式时,可能会出现403错误。在类似于邮寄附件的示例中使用字符串插值对我有用:
doc = order.document
attachments["Order.pdf"] = File.read(open("#{doc}"))

1

这是另一种你可以尝试的方法,对我有用:添加一个“User-Agent”选项:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接