我是Ruby/Rails的新手,并在我团队的web应用程序上工作。我想知道是否有一种方法来配置应用程序,以便任何5xx http状态错误都会给客户端提供相同的通用错误消息(为了维护安全)。
理想情况下,配置也将覆盖任何新的5xx错误,这些错误可能由不知道安全协议的未来工程师提供消息。
发布于 2022-09-12 05:56:32
Rails提供了rescue_from来捕捉应用程序中的错误,并以适当的错误消息对它们进行响应。
当您想要捕获所有类型的内部服务器错误时,从StandardError中拯救可能是最好的选择。在处理异常的方法中,您可以呈现一个HTML响应、一个JSON响应,或者根据您的需要使用错误消息重定向用户,类似于普通的控制器方法。
# in app/controllers/application_controller.rb
rescue_from StandardError, :handle_exceptions
private
def handle_exceptions
render # ...
end当您真正想要捕获所有类型的异常时,您可能希望从Exception而不是StandardError中拯救出来。但是要注意,这也会捕获像SyntaxError、LoadError和Interrupt这样的子类。
在所有情况下,我建议手动登录控制器中以这种方式处理的异常,以使调试更容易。
https://stackoverflow.com/questions/73684288
复制相似问题