Подтвердить что ты не робот

Как указать параметры белого списка в Sinatra с помощью Rack/Protection

У меня есть веб-приложение, скажем http://web.example.com, что делает запрос POST http://api.example.com, На сервере api установлена ​​последняя версия Sinatra с включенной поддержкой стойки. Я получаю эту ошибку "атака, предотвращенная Rack:: Protection:: HttpOrigin".

Я могу сделать что-то вроде этого:

set :protection, :except => [:http_origin]

но я чувствую, что просто игнорирую фактическую проблему.

Я попытался сделать это:

use Rack::Protection::HttpOrigin, :origin_whitelist => ['http://web.example.com']

но я все еще получаю предупреждение.

Запрос не отклоняется, но Sinatra очищает мою сессию см. этот пост, и мне нужен session_id.

Приветствуется любая помощь или примеры того, как указать параметр_whitelist для класса HttpOrigin.

4b9b3361

Ответ 1

Передайте свои параметры как хэш set :protection:

set :protection, :origin_whitelist => ['http://web.example.com']

Затем Sinatra передаст их до Rack::Protection.

Я подозреваю причину, по которой он терпит неудачу, когда у вас есть use Rack::Protection::HttpOrigin, :origin_whitelist => ['http://web.example.com'], что у вас все еще есть защита, поэтому вы получаете два экземпляра HttpOrigin. Вы можете попробовать

set :protection, :except => [:http_origin]
use Rack::Protection::HttpOrigin, :origin_whitelist => ['http://web.example.com']

(т.е. имеют обе линии, которые вы пытались вместе), но я думаю, что первое решение является более чистым.