Отправка JSON через AJAX в приложение rails приводит к неверной ошибке auth_token, даже если указан ключ api_key - PullRequest
0 голосов
/ 01 марта 2012

Мой вызов Ajax:

jQuery.post('http://acme.domain.vhost/objects.json',
            {object: data, api_key: "123"},
            callback_function);

который бросает

ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken)

Что странно, потому что, когда я делаю любой запрос, используя CURL:

curl -H 'Content-Type: application/xml' -d '<object><name>Test API Object</name></object>' http://acme.domain.vhost/objects.xml?api_key=123

Итак ... что я здесь не так делаю? Мне не нужен authenticity_token, если я не публикую форму через html и не предоставляю api_key.

что действительно сбивает с толку, так это последняя строка в консоли перед ошибкой:

SELECT * FROM `users` WHERE (`users`.`api_key` = '123') AND (users.deleted_at IS NULL OR users.deleted_at > '2012-02-29 23:12:25') LIMIT 1

когда я копирую это в свою базу данных, он возвращает правильного пользователя ... Итак, почему не работает ajax-запрос?

UPDATE: Изменен curl на POST, так что он в буквальном смысле ТОЧНЫЙ, как запрос ajax.

1 Ответ

0 голосов
/ 01 марта 2012

Полагаю, это просто потому, что у вас включен protect_from_forgery, и вы не передаете csrf_token в вызове API.

Как правило, я избегаю извлекать свои контроллеры API из ApplicationController по этой причине: здорово поддерживать безопасность csrf, но в API ее не использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...