【问题标题】:Why does rails app return 406 instead of 404 in some cases?为什么 Rails 应用程序在某些情况下返回 406 而不是 404?
【发布时间】:2012-10-15 06:29:02
【问题描述】:

我有一个运行良好的大型 Rails 应用程序,但由于该应用程序的一些令人讨厌的行为,我在 google 上遇到了问题。当我打电话时

http://railsapp.com/index.html

应用程序返回不存在的 404 错误,这是正确的。但是当我打电话时

http://railsapp.com/index.htm

它返回一个 406 错误,这不是很好。每次请求扩展名为 .htm 的不存在文件时,都会出现此问题。如何让我的 Rails 应用返回 404 而不是 406?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 error-handling


    【解决方案1】:

    试试这个

     respond_to do |format|    
       format.html {}
       format.js {}        
      end
    

    因为在您的“#{RAILS_ROOT}/public/..”中,406.htm 文件不是他们的,因此它会给出错误,并且 404.html 文件在公共文件夹中可用,因此可以调用。

    在您的 {RAILS_ROOT}/public 这些是他们的文件

    1. 404.html
    2. 422.html
    3. 500.html
    

    如果你使用这些文件,那么它会调用 else 它会给出错误,比如文件不存在。

    你也可以在 ApplicationController 中定义一个方法,比如:

    def render_404
      render :file => "#{RAILS_ROOT}/public/404.html",  :status => 404
    end
    

    【讨论】:

      【解决方案2】:

      406.htm 文件在您的公用文件夹中不可用,因此您收到错误 - 不存在文件。根据您的布局在您的公用文件夹中添加 406.html 文件,然后尝试。

      【讨论】:

        猜你喜欢
        • 2013-05-13
        • 1970-01-01
        • 2018-08-27
        • 1970-01-01
        • 1970-01-01
        • 2019-12-27
        • 2015-08-03
        • 1970-01-01
        • 2019-08-08
        相关资源
        最近更新 更多