2014-09-30 29 views
0

什麼是做一個末日的應用程序,如果我有一個簡單的帖子這樣的最佳方式:發佈到西納特拉從移動應用

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

但後從移動應用來在用戶僅僅是問了一封電子郵件,只是一封電子郵件。這封電子郵件應該通過簡單的Sinatra API在Postgres DB中捕獲。它不是這樣工作,我有一個內部服務器錯誤。

任何提示?如果這是不可能的,那怎麼可能呢,我不能指定一個白名單的URL,因爲這個應用程序在應用商店中,我不知道它來自哪裏。

謝謝!

+1

'如果不可能,怎麼可能做到這一點 - 好態度。 :) – BroiSatse 2014-09-30 10:42:45

+0

究竟是什麼錯誤? – 2014-09-30 10:44:33

+0

在控制檯中,如果我嘗試發佈內容,則會顯示內部服務器錯誤。在Heroku的日誌中,我看到:WARN - :由Rack :: Protection :: HttpOrigin阻止的攻擊 – user2448801 2014-09-30 10:52:15

回答

0

如果要禁用機架保護,你可以這樣做:

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 2014-09-30 11:05:54

+1

還可以禁用remote_token保護,例如:set:protection,:except => [:remote_token,:http_origin] – maddin2code 2014-09-30 11:51:51