1

App2ポート 4000 でリッスンする Rails アプリケーションとApp1、ポート 3000 でリッスンする別の Rails アプリケーションApp2があります。認証されたユーザーのみが使用できるカスタム API 呼び出しが定義されています。

HTTPartyApp1を使用して次のように API リクエストを作成する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 トークンを送信する方法を教えてください。

4

2 に答える 2

0

CSRF トークンは、Web サイト ユーザーのセキュリティのために使用されます。これは各フォームに挿入され、ユーザー セッションに対してのみ有効であり、ブラウザーは、セッションがハイジャックされていないことを確認するために、投稿ごとにそれを送信する必要があります。

このセキュリティ メカニズムを必要としない専用の API がある場合は、protect_from_forgeryチェックをスキップして、アプリケーションで CSRF トークンの検証を無効にすることができます。

于 2013-10-10T11:53:15.540 に答える