0

jquery応答に対応する認証トークンを追加したにもかかわらず、InvalidAuthenticityTokenを取得しています。コードにエラーがありますか、それとも別の根本的な問題がありますか?コメントありがとうございます。ありがとう!

使用:Rails 2.3.3、Ruby 1.8.6、Webrick、JQuery 1.3.2

layout / 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が設定されていることが示されます。これを解決するための助けは素晴らしいでしょう。

4

2 に答える 2

1

したがって、このすべてのデバッグの後、ChromeとFirefoxの両方で同じ問題が発生したため、根本的な原因はブラウザではありません。潜在的な問題の1つは、フォームの送信時に新しいキーが生成され、ajax呼び出しを介して正しく更新されていないことです。誰かがこれの修正を知っているか、GET / POST / PUT / DESTROYの認証が機能しているJQueryプロジェクトが機能している場合、それは素晴らしいことです(チュートリアルでも機能しませんが、古いバージョンのjquery / rails)。

于 2010-01-02T09:52:04.980 に答える
0

私の主な推測では、キャッシュの問題に直面しているということです...2つの異なるクライアントからページをリクエストし、両方の認証キーに一致があるかどうかを確認してください...

于 2009-12-22T14:12:50.700 に答える