【问题标题】:Give 403 error for rails-api root为 rails-api root 提供 403 错误
【发布时间】:2014-03-16 22:54:48
【问题描述】:

我正在使用 rails-api 创建移动 api,当用户转到 api 的 url 时,我得到了预期的“欢迎登机”页面。如果用户尝试使用网络浏览器访问根 url,我想要做的是删除它并只给用户一个 403 页面(或 404)。

我知道我可以创建一个控制器(error_pages),然后将它与routes.rb中的一个方法(no_access)进行匹配,然后在views目录中就有一个默认渲染的页面。

root 'error_pages#no_access' # in routes.rb

我假设有一种更简单的方法可以使用 Rails 魔法来实现这一点。

编辑:

我找到了这篇 SO 文章:

Where is the default "Welcome Aboard" page located in my app?

它声明从 Rails 4 开始,index.html 不再位于 public/ 目录中,因为它包含在 gem 中。

是否可以在 routes.rb 文件中只指向公共目录中的错误页面之一?

我尝试了以下方法,但它不起作用:

root 'public/404.html'

我不想创建一个只指向错误页面的控制器,有没有更好的 rails 方式?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 rails-api


    【解决方案1】:

    只需删除public/index.html。这将导致对根路径的请求的404(未找到)响应。

    【讨论】:

    • 由于我使用的是 rails-api gem,因此在公共目录中没有创建 index.html。这是否意味着我只会在开发环境中获得“欢迎”页面,但是一旦它被推送到 prod(在我的情况下是 Heroku),它将是 404?
    • 我刚刚对其进行了测试,并在我的案例中创建了该文件。请您仔细检查一下它不存在吗?
    • 看起来从 Rails 4 开始,index.html 页面不在公共目录中。我已经更新了问题。
    猜你喜欢
    • 2019-11-21
    • 1970-01-01
    • 2011-04-25
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多