Rails 6 `protect_from_forgery with:: null_session` не работает - PullRequest
0 голосов
/ 23 октября 2019

В попытке изучить React и совместное использование Rails, я нахожусь в процессе создания простого приложения "Todo". Я использую axios, чтобы делать запросы к моим rails api в компонентах реагирования.

Пока все работало нормально, пока я не сделал свой первый запрос POST. Я указываю на правильное место и отправляю хорошие параметры, но вижу, что получаю Can't verify CSRF token authenticity.. При дальнейшем поиске, похоже, что добавление:

class ApplicationController < ActionController::Base
    protect_from_forgery with: :null_session
end

решит мою проблему. Но, несмотря на перезапуск сервера / etc ... Я все еще получаю ту же ошибку при отправке запроса POST. Кроме того, добавление prepend: true также не помогает (как это было предложено другим участником).

Что-то мне не хватает? Это кажется простой проблемой из того, что я прочитал, но, похоже, это не работает для меня.

Im on Rails 6.0

1 Ответ

1 голос
/ 23 октября 2019

если вы просто хотите, чтобы ошибка исчезла, используйте:

class ApplicationController < ActionController::Base
  skip_forgery_protection
end

Но если вы действительно хотите воспользоваться преимуществами защиты от подделки Rails, добавьте заголовок "X-CSRF-Token"на ваш почтовый запрос от React. Значение этого заголовка можно получить с помощью javascript из элемента head страницы, в метатеге, включенном в Rails. Например (используя jQuery):

var csrf_token_value = $('meta[name="csrf-token"]').attr('content')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...