Отправка изображения с клиента Android на сервер Rails без запуска InvalidAuthenticityToken - PullRequest
1 голос
/ 08 декабря 2010

Я создаю приложение для Android, которое работает на сервере rails. Сначала, когда я попытался опубликовать простые данные 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):

Ответы [ 3 ]

3 голосов
/ 10 декабря 2010

По предложению Джесси я в итоге использовал

protect_from_forgery :except => :upload_avatar_pic

для отключения проверки подлинности, но только для определенной функции, поэтому проверки запросов браузера все еще проверяются.

0 голосов
/ 15 декабря 2010

Проблема решена Джесси Волгамоттом, но на странице показывается сообщение «Вы перенаправлены», когда я отправляю форму (Обновить, создать, показать). Перед этим страница перенаправлена ​​правильно. Я использую рельсы 2.3.8. Как решить эту проблему?

0 голосов
/ 08 декабря 2010

Вы можете отключить проверку подлинности на вызовах API, не полученных от не-веб-клиентов. Вы можете сделать это в фильтре перед

class ApiController < ApplicationController
  skip_before_filter :verify_authenticity_token

  def create
    #or whatever
  end
end
...