2015-08-28 7 views
0

Я получаю эту ошибку: ActionController::InvalidAuthenticityToken на каждый запрос на мой webapp.Ошибка Rails: ActionController :: InvalidAuthenticityToken

Мое временное решение добавляет это к контроллеру: skip_before_action :verify_authenticity_token, но, конечно, создает уязвимость ...

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

спасибо.

+0

Как сделать пост запросы? – EugZol

+0

Использование обычного html. Вот почему? Мне нужно использовать рельсы? Как мне это сделать? – Pabi

+0

Можете ли вы опубликовать свой вывод консоли в свой пост? Кроме того, как и любые другие контроллеры, которые влияют на ваши запросы POST? –

ответ

2

Вам необходимо отправить токен аутентификации с помощью вашего HTTP-вызова на контроллер. Обычно, если вы используете вспомогательный помощник form_for, вам не нужно явно отправлять токен аутентификации. Но если вы используете HTML-форму <form> или Ajax-запрос, тогда вы должны отправить этот токен с вызовом.

Ajax

$.ajax({ 
....., 
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))}, 
....... }); 

Форма поместить этот внутри HTML-тэга

<%= tag(:input, :type => "hidden", :name => request_forgery_protection_token.to_s, :value => form_authenticity_token) %> 
+0

У меня есть вопрос, который не полностью связан с этим. Но есть ли способ, которым пользователь может подделывать форму и подавать поддельный, например, изменяя значение max в числовом вводе? Если да, то как я могу предотвратить это или сделать AuthenticityTokens все это? – Pabi

+0

Также, когда вы говорите, помещаете это внутри тега формы html, где именно это? Просто

"hidden",: name => request_forgery_protection_token.to_s,: value => form_authenticity_token)%>> – Pabi

+0

@ Паби прочитал это http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection.html –

Смежные вопросы