Исключение ActionController :: InvalidAuthenticityToken в сафари при использовании iframe - PullRequest
3 голосов
/ 10 августа 2011

Хотя я разместил форму из iframe в сафари, она дает исключение Invalid Authenticity Token.Если я попытаюсь без iframe, то он работает нормально.

Почему это происходит?Как я могу это исправить?

1 Ответ

0 голосов
/ 04 сентября 2011

Маркер подлинности - это механизм, который rails использует для защиты пользователей от CSRF-атак. Вот хорошее объяснение, взятое из Понимание токена подлинности Rails

Когда пользователь просматривает форму для создания, обновления или уничтожения ресурс, приложение rails создаст случайный authenticity_token, сохраните этот токен в сеансе и поместите его в скрытое поле в форма. Когда пользователь отправляет форму, рельсы будут искать authenticity_token, сравните его с тем, что хранится в сеансе, и если они совпадают, запрос может продолжаться.

Таким образом, для любого действия, которое может изменить ваши рельсы модели, необходимо убедиться, что это изменение, созданное вами.

Rails делает это (с помощью form_for или form_tag помощников), добавляя этот секретный токен аутентификации в форму с html-тегом, подобным следующему: <input name="authenticity_token" type="hidden" value="Som3Thin10ngAndUGly">

Возвращаясь к вашей проблеме: я никогда не работал с iframes, поэтому я не уверен, что происходит, но я предполагаю, что ваша форма iframe не передает authencity_token. Если это так, решение простое, просто добавьте скрытый ввод, подобный приведенному выше, и используйте метод form_authenticity_token, чтобы установить его значение.

...