Rails сессия получает сброс - PullRequest
2 голосов
/ 24 апреля 2011

У меня странная проблема. Недавно я обнаружил, что текстовое поле, опубликованное через AJAX, дает ошибку. После расследования я обнаружил, что сеанс сбрасывается для этого запроса POST AJAX. Я думал, должно быть проблема CSR. Я проверил токен, и он передается правильно, как в файле макета:

  <%= 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 отличается от того, который уже есть в хэше. Я не могу понять все это. Любые подсказки, что может быть причиной всего этого?

1 Ответ

0 голосов
/ 25 апреля 2011

В моем рабочем приложении Rails 3 имя токена равно authenticity_token, а сам токен не закодирован перед отправкой.

...