InvalidAuthenticityToken для JQuery несмотря на установку токена подлинности - PullRequest
0 голосов
/ 22 декабря 2009

Я получаю InvalidAuthenticityToken, несмотря на добавление соответствующих токенов подлинности в ответ jquery. Есть ли ошибка в коде, или есть другая, корневая проблема? Я ценю любые комментарии. Спасибо!

Использование: Rails 2.3.3, Ruby 1.8.6, Webrick, JQuery 1.3.2

макет / networks.html.haml

= token_tag
= javascript_tag "window.AUTH_TOKEN = '#{form_authenticity_token}';"

JavaScripts / application.js

$(document).ready(function() {

    // All non-GET requests will add the authenticity token
    // if not already present in the data packet
    $(document).ajaxSend(function(event, request, settings) {
       if (typeof(window.AUTH_TOKEN) == "undefined") return;
       // <acronym title="Internet Explorer 6">IE6</acronym> fix for http://dev.jquery.com/ticket/3155
       if (settings.type == 'GET' || settings.type == 'get') return;

       settings.data = settings.data || "";
       settings.data += (settings.data ? "&" : "") + "authenticity_token=" + encodeURIComponent(window.AUTH_TOKEN);
     });

  ajaxLinks();
});

Рендеринг HTML имеет:

<input name="authenticity_token" type="hidden" value="ZaXj3ACQl+8JKtaDAUoxtSsqzEagSPyHbS25ai9qWCw=" />
<script type="text/javascript">
//<![CDATA[
window.AUTH_TOKEN = 'ZaXj3ACQl+8JKtaDAUoxtSsqzEagSPyHbS25ai9qWCw=';
//]]>
</script>

и точка останова показывает, что window.AUTH_TOKEN был установлен. Любая помощь, чтобы решить это было бы здорово.

Ответы [ 2 ]

1 голос
/ 02 января 2010

Итак, после всей этой отладки я столкнулся с одной и той же проблемой как в Chrome, так и в Firefox, поэтому основной причиной являются не браузеры. Одна потенциальная проблема может заключаться в том, что новый ключ генерируется при отправке формы и не обновляется корректно с помощью вызова ajax. Если кто-то знает исправление для этого или у него есть работающий проект JQuery, у которого есть рабочая аутентификация для GET / POST / PUT / DESTROY, это было бы замечательно (даже уроки не работают для меня - но это может быть из-за старых версий JQuery / рельсы).

0 голосов
/ 22 декабря 2009

Мое основное предположение заключается в том, что вы столкнулись с проблемой кеширования ... запросите страницу у двух разных клиентов и проверьте, есть ли совпадение в обоих ключах аутентификации ...

...