Итак, у меня есть форма, которая переводит XHR во внешний API для получения токена, а затем отправляет URL-адрес, который вызывает нашу базу данных по адресу "/ update" на нашем бэкэнде. Мы пытаемся ограничить количество запросов, которые человек может сделать с помощью формы с помощью дросселя атаки в стойку. Таким образом, при достижении предела, например, после двух попыток третья должна выдать ошибку 429, а затем перенаправить на нашу страницу /429
. У меня есть это до сих пор:
throttle '/update', {
limit: 2,
period: 60
} do |req|
next nil unless req.path == '/update' && req.put?
req.ip
end
Тогда для нашего ответа дросселя мы делаем:
Rack::Attack.throttled_response = lambda do |env|
headers = {
'Location' => '/429'
}
[302, headers]
end
Код работает и возвращает 429, но перенаправление не происходит, даже если у нас есть Location
в заголовках. Также у нас есть конечная точка, где мы делаем GET
, и тот же ответ перенаправляет пользователя на /429
успешно.
Так как перенаправить пользователя при выполнении запроса put
или post
с помощью Rack Атака ruby на библиотеку рельсов? Есть ли другой способ перенаправить пользователя? Любая помощь будет оценена.