【问题标题】:Assets Forbidden on Rails Production ServerRails 生产服务器上禁止的资产
【发布时间】:2017-02-20 18:58:10
【问题描述】:

我正在尝试将 Rails 应用程序部署到 Apache 服务器上。我正在尝试通过以下方式访问应用程序资产文件夹中的 jquery:

<script src="/assets/jquery.js" type="text/javascript"></script>

我还尝试使用 javascript_include_tag 加载自定义脚本。当我查看 Web 浏览器的 javascript 控制台时,我看到服务器在尝试访问这些脚本时响应了 403 禁止错误代码。

我尝试 chmod 775 我的 /var/www//public/assets 文件夹,但这并没有解决问题。我已经尝试过运行 rake assets:precompile 和更改 production.rb 以提供静态文件并将 config.assets.compile 设置为 true。

【问题讨论】:

  • 之所以有效,是因为您已经覆盖了应用程序以允许“如果预编译资产丢失,则回退到资产管道”这告诉您,即使您预编译了资产,应用程序配置中的其他内容也是错误的。这样做并只是覆盖它只会掩盖症状,并且很可能会在您前进时引起更多问题。更不用说安全隐患了。我建议您查看您的 config/initializers/assets.rb 并确保如果您使用的是 rails 5,所有内容都已正确设置。

标签: ruby-on-rails apache passenger http-status-code-403


【解决方案1】:

确保在您的 /config/environments/production.rb 中启用了预加载。

【讨论】:

  • 尝试从 src 属性 "assets/jquery.js" 的开头删除 / 。根据 Rails 应用程序的设置方式,我已经看到 / 在开始时会破坏一些东西。
【解决方案2】:

我不确定为什么会这样,但我跑了

rm -rf public/assets

在我的应用程序目录中并更改了我的 production.rb 以便

config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
config.assets.compile = true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 2012-03-29
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    相关资源
    最近更新 更多