[英]Unable to make an API call from Rake task
我有一個Rails應用程序App2
監聽4000端口,另一個Rails應用程序App1
端口3000監聽App2
有定義的自定義API調用只能由經過認證的用戶進行使用。
在使用HTTParty發出API請求的App1
上運行了rake任務,如下所示:
response = HTTParty.post("http://localhost:4000/users/sign_in",
:basic_auth => {:user => {:email => "<User email>", :password => "<Password>"}},
:headers => { 'X-Requested-With' => 'XMLHttpRequest',
'User-Agent' => 'Mozilla/5.0 (iPhone; U; ru; CPU iPhone OS 4_2_1 like Mac OS X; ru) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5',
'ContentType' => 'application/json' })
response.body
的輸出顯示用戶未通過身份驗證!
在分析錯誤時,開發日志顯示:
WARNING: Can't verify CSRF token authenticity
請幫助我如何使用Rake任務的POST請求發送CSRF令牌。
我在使用HTTParty
的POST請求中犯了一個錯誤。 basic_auth
應該是body
。 因此正確的陳述是:
response = HTTParty.post("http://localhost:4000/users/sign_in",
:body => {:user => {:email => "<User email>", :password => "<Password>"}},
:headers => { 'X-Requested-With' => 'XMLHttpRequest',
'User-Agent' => 'Mozilla/5.0 (iPhone; U; ru; CPU iPhone OS 4_2_1 like Mac OS X; ru) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5',
'ContentType' => 'application/json' })
CSRF令牌警告不會引起問題! 我收到了我已通過身份驗證的回復。
CSRF令牌用於確保網站用戶的安全。 它被注入到每種形式中,僅對用戶會話有效,瀏覽器將不得不將其隨每個帖子一起發送,以驗證該會話未被劫持。
如果您有不需要此安全機制的專用api,則可以通過跳過protect_from_forgery
檢查來禁用應用程序中的CSRF令牌驗證。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.