2

私は奇妙な問題を抱えています。最近、AJAX 経由で投稿されたテキスト フィールドでエラーが発生していることに気付きました。調査の結果、この POST AJAX リクエストでセッションがリセットされることがわかりました。csrfの問題だと思いました。トークンを確認したところ、レイアウト ファイルのように正しく渡されています。

  <%= javascript_tag "var AUTH_TOKEN = #{form_authenticity_token.inspect};" if protect_against_forgery? -%>

そして、私の AJAX リクエストは次のようになります。

 <script type="tex/javascript">
            $(document).ready(function(){
                    $("#post_msg").click(function(){
                            var update = $("#msg").val();
                            var authenticity_token = AUTH_TOKEN;
                            $.ajax({
                                    type: "POST",
                                    url: "/messages.js",
                                    data: "msg[text]="+escape(msg) + "&_csrf_token="+encodeURIComponent(authenticity_token),
                                    dataType: "json",
                                    success: function(msg){
                                      // Code to append the msg to DOM
                                    )

しかし、デバッガーでは、csrf トークンが既にハッシュされているトークンとは異なることに気付きました。私はこれらすべてを理解することができません。このすべての理由は何か手がかりはありますか?

4

1 に答える 1

0

私の作業中のRails 3アプリでは、トークン名はauthenticity_tokenあり、実際のトークン自体はPOSTする前にエンコードされていません。

于 2011-04-25T13:33:54.813 に答える