【问题标题】:Why do some assets give 403 forbidden?为什么有些资产会给出 403 禁止?
【发布时间】:2015-06-22 18:02:09
【问题描述】:

我正在使用 ROR、nginx、passenger...

如果数据库中没有图片,那么我的应用将提供“default_avatar.png”。我注意到我无法保存新图片。所以,我更新了我的蜻蜓初始化程序以指向我的数据库服务器:

...
  # I have obscured the host IP for this example. 
  config.url_host = Rails.env.production? ? 'http://IP_OF_HOST' : 'http://localhost:3000'
...

现在我可以保存图片并通过我的应用查看它们,但“default_avatar.png”无法解决。奇怪的是,其他图像资产似乎确实出现了。为什么我会得到 403?起初猜测我认为这是一个权限错误。但是为什么它会为其他图像提供服务呢?

更新:

我刚刚注意到一个非常重要的线索。当资产不起作用时,它们有 url:

/media/jakbfAGasgAgADSGANJGFDgbnadglnalgbakljbgkjabg/default_avatar.png

当它们起作用时:

/assets/avatar.png

我应该提到我有 2 个应用服务器和 1 个数据库服务器。我不认为这是权限错误。

【问题讨论】:

  • 您是否检查了 default_avatar.png 的文件权限?也许它们与您上传的文件不同(因为它们是由服务器创建的)并且 Nginx 无法读取它们。
  • 我已更新我的问题以添加更多信息。我不认为它的权限。因为在我更新初始化程序之前它们会失败。
  • 你在预编译你的资产吗?
  • 资产已预编译

标签: ruby-on-rails ruby dragonfly-gem


【解决方案1】:

我也遇到了同样的问题。

使用AssetTagHelperlib提供的html helper时需要指定文件的扩展名。

这将起作用: <%= image_tag('avatar.png') %>

这不起作用: <%= image_tag('avatar') %>

不容易调试。

【讨论】:

    猜你喜欢
    • 2021-08-26
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 2016-06-05
    • 2022-01-07
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多