ruby-on-rails - 在 Rails 中,如何响应无关的非 http 请求?
问题描述
我有一个相对较大的网站,每天都会收到与各种 IP 地址无关的请求。一个常见的是example.com/home.zip
.
这击中了我的 Home 控制器 index action {"controller"=>"home", "action"=>"index", "format"=>"zip"}
。目前,它会导致 500 错误:
Missing template home/index, application/index with {:locale=>[:en], :formats=>[:zip], :handlers=>[:erb, :builder, :arb]}
我想处理它的优雅方式是 404。我最接近的解决方案是:
respond_to do |format|
format.html
format.any { redirect_to :foo }
end
除了redirect_to :foo
我会做的render file: "#{Rails.root}/public/404.html", status: 404
。我在正确的轨道上吗?
解决方案
没有理由自己渲染404,你可以
raise ActionController::RoutingError.new('Not Found')
对于这种情况,您也可以使路由约束更加困难,这样此类请求就不会命中控制器。
推荐阅读
- php - codeIgniter 中的错误滑块轮播 Boostrap
- c# - 按属性分组并在每个属性下列出从 sql 到 C#
- vue.js - vuex mapGetters 是否值得使用?
- c# - 我们可以用 C# Socket 创建 Windows 服务吗
- angular - Angular 6:无法加载动态表单
- sql - 通过将其与一组字符进行比较来替换文本中的关键字
- wpf - 如果附在下面,如何在 wpf c# 类我的 xmal 代码中检查 cehckbox 值
- javascript - 在嵌套数组中查找对象及其位置
- firebase - Firebase 功能:自定义身份验证端点
- php - 流明中的 Elasticsearch 在结果数据中给出空项