Я пытаюсь просто протестировать мой RESTful API с помощью cURL. Используя следующий вызов:
curl -d "name=jimmy" -H "Content-Type: application/x-www-form-urlencoded" http://127.0.0.1:3000/people.xml -i
Рельсы умирают, хотя:
ActionController :: InvalidAuthenticityToken (ActionController :: InvalidAuthenticityToken):
: 8: в `синхронизировать '
Похоже, это выполняется через фильтр protect_from_forgery. Я думал, что protect_from_forgery исключен для HTTP-запросов типа POST / PUT / DELETE, отличных от HTML? Это явно нацелено на формат XML.
Если я передаю фактический XML-контент, он работает. Но мои пользователи будут отправлять POST-данные в виде параметров в кодировке URL. Я знаю все способы, которыми я могу отключить protect_from_forgery, но как правильно это сделать? Я хочу оставить его включенным, чтобы, когда у меня были формы на основе HTML и я обрабатывал format.html, я не забывал повторно включить его на тот момент. Я хочу, чтобы пользователи могли отправлять HTTP-запросы POST к моему API на основе XML, но не засыпать этим.