簡體   English   中英

無法通過Rake任務進行API調用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM