2014-09-30 3 views
0

Что такое лучший способ сделать приложение Sinatra, если у меня есть простой пост, как это:Проводка для Синатров из мобильного приложения

post '/newemail' do 
    @email = params[:data] 
    @email = Email.new(:email => params[:data]) 
    @email.save 
end 

Но пост исходит от мобильного приложения, где пользователь просто спросил по электронной почте, просто по электронной почте. И это электронное письмо должно быть записано в DB Postgres через простой API Sinatra. Он не работает так, я получил ошибку внутреннего сервера.

Любые советы? Если это невозможно, как это возможно, я не могу указать белый URL-адрес, потому что приложение находится в магазине приложений, и я не знаю, откуда он.

Спасибо!

+1

'Если это невозможно, как это можно сделать' - хорошее отношение. :) – BroiSatse

+0

Какая ошибка в точности? –

+0

В консоли я получаю Внутреннюю ошибку сервера, если я пытаюсь отправить сообщение. В журналах Heroku я вижу: WARN -: предотвращение атаки с помощью Rack :: Protection :: HttpOrigin – user2448801

ответ

0

Если вы хотите, чтобы отключить защиту Rack, вы можете сделать это:

set :protection, :except => [:http_origin] 

В качестве альтернативы, вы можете установить белый список для защиты, как это:

set :protection, :origin_whitelist => ['http://address-to-allow.com'] 

Вы можете прочитать больше о защите здесь: https://github.com/rkh/rack-protection - это, наверное, хорошая идея, прежде чем вы что-нибудь измените.

+0

Я сделал это точно так, как вы сказали, но он дает мне на консоли следующую ошибку: ERROR RuntimeError: вам нужно установить до промежуточного уровня сеанса * до * Rack :: Protection :: RemoteToken – user2448801

+1

Также отключите защиту remote_token следующим образом: set: protection,: except => [: remote_token,: http_origin] – maddin2code

Смежные вопросы