Я понимаю, что защита CSRF дает некоторую гарантию того, что запрос возник из вашего собственного веб-приложения.Однако я передаю переменную из JS в Rails в том же приложении, используя:
app/views/statistics/select.js
$.ajax({
method: "POST",
url: "statistics/plot",
dataType: "script",
data: {
country_id: 7
}
});
маршруты:
post '/statistics/plot(:country_id)' => 'statistics#plot'
Контроллер:
class StatisticsController < ApplicationController
def plot
@selected_countries = params[:country_id]
respond_to do |format|
format.html{ redirect_to root_path }
format.js
format.json { render json: @selected_countries }
end
end
end
Возвращено:
Started POST "/statistics/plot" for .........
Started GET "/" for ........
Processing by StatisticsController#plot as JS
Parameters: {"country_id"=>"7"}
Can't verify CSRF token authenticity.
Completed 422 Unprocessable Entity in 1ms (ActiveRecord: 0.0ms)
Есть какие-нибудь идеи о том, что я могу делать неправильно, когда приложение занимает пост, как будто оно исходит от внешнего приложения или API?Я искал похожие сообщения, но большинство из них касалось отключения CSRF при получении данных из API или аутентификации запросов API с помощью ключа API.В моем случае я отправляю данные в том же приложении.