Я создаю приложение для Android, которое запускается с сервера рельсов. Сначала, когда я пытался отправить простые данные String на сервер, я столкнулся с проблемой InvalidAuthenticityToken, но понял, что могу обойти проверку подлинности, установив тип контента на "json"
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(Constants.REST_HOST + "/add_comment");
post.addHeader("Content-Type", "application/json");
Следующий шаг - попытка загрузить изображение профиля загрузки. Однако, когда я попытался загрузить фотографию через сообщение MultipartEntity, установка типа содержимого на "json" вызывает следующую ошибку:
StandardError (Неверная строка JSON):
но не задание типа содержимого возвращает исключение InvalidAuthenticityToken. Каков правильный способ размещения изображения на сервере rails с внешнего Java-клиента?
ActionController:: InvalidAuthenticityToken (ActionController:: InvalidAuthenticityToken):
Основываясь на предложении Джесси, я в конечном итоге использовал
protect_from_forgery :except => :upload_avatar_pic
чтобы отключить проверку подлинности, но только для определенной функции, поэтому проверки запросов браузера все еще проверяются.
Проблема, разрешенная Джесси Вольгамотт, сказала, но сообщение на странице "Вы перенаправлены", когда я отправляю форму (Обновить, создать, показать). Перед этим страница перенаправляется правильно. Я использую rails 2.3.8. Как решить эту проблему?
Вы можете отключить проверку подлинности на API без вызовов от не-веб-клиентов. Вы можете сделать это в фильтре перед
class ApiController < ApplicationController
skip_before_filter :verify_authenticity_token
def create
#or whatever
end
end