4

我正在使用机架攻击。如果有人超出限制,我将使用以下代码:

Rack::Attack.throttled_response = lambda do |env|
  [429, {}, [ActionView::Base.new.render(file: 'public/429.html')]]
end

当 sby 超过 POST 请求的限制时,原始响应将是正常工作respond_to :html的呈现429.html。当响应的 POST 请求超出限制respond_to :js时,屏幕上不会发生任何事情,但是如果我查看日志,一切似乎都很好:

Rendered public/429.html (1.4ms)

我怎样才能显示的429.html情况下js response?是否有可能以error messages某种方式从这个机架代码传递到 rails 应用程序?如果不是那么复杂,我可能会更改为error messagesfrom 。rendering

4

1 回答 1

7
Rack::Attack.throttled_response = lambda do |env|
  html = ActionView::Base.new.render(file: 'public/429.html')
  [503, {'Content-Type' => 'text/html'}, [html]]
end

您可以在第二个参数中设置任何响应内容类型。

于 2016-09-20T06:39:30.697 回答