camwestの答えをもう少し詳しく説明するには:
articles_controller
たとえば、アクションに対してAMFリクエストを行う場合update
、リクエストは実際にはそのコントローラーとアクションに直接送信されません。このAMFリクエスト(POSTリクエスト)は、実際にはRailsルーターを介してアクション(AMFエンドポイント)に到達しrubyamf_controller
ますgateway
。宛先コントローラーとアクション(articles_controller
、update
action)は、このPOSTリクエストのパラメーターとしてタグ付けされます。
mime_type
このPOST呼び出しのセットはですamf
。RubyAMFプラグインは、これmime_type
を偽造保護がチェックされていないmime_typesのリストに追加します。したがって、アクションの呼び出しは、rubyamf_controller
がgateway
なくても正常に実行されauthenticity_token
ます。
Flexからarticles_controller
、update
アクションにいくつかのパラメーターを送信した可能性があります。これらは、アクションへのシリアル化されたAMFオブジェクトとして到着しますgateway
。これらのパラメータはここで逆シリアル化されます。
次に、gateway
アクションは内部でターゲットコントローラーとアクション(articles_controller
、update
action)を呼び出します。ターゲットアクションはその処理を実行し、応答を返します。アクションは、このgateway
ターゲットアクションの応答を取得し、それをAMFにシリアル化して、クライアントに送り返します。
Rails 2.xでは、この内部呼び出しは偽造保護メカニズムを呼び出しませんでした。authenticity_token
したがって、パラメータの1つとしてをターゲットアクションに送信しなくても、正常に機能します。
これはRails3で変更されました。内部呼び出しでさえ偽造保護メカニズムを呼び出します。ターゲットアクションは、パラメーターの存在をチェックしauthenticity_token
ます。したがって、Flexから送信する必要があります。
詳細はこちら:http ://anjantek.com/2011/05/08/rails-3-rubyamf-flex-csrf-solution/