1

この問題は、修正に時間がかかりすぎて、病気になっています...

昨日、本当に迷惑なバグが発生し始めました。なぜそれが起こるのか、そのルーツを修正することはできません...

次のJavaScriptコードを使用すると:

$(".reply_to_article").click(function(){
    var cct = $.cookie('csrf_cookie_name');

    var body = $(this).parent().find("textarea");

    $.ajax({
        type: "POST",
        url: "http://www.domain.com/articles/replyToArticle",
        dataType: 'json',
        data: {
            body : body.val(),
            csrf_name : csrf_value
        },
        success: function(data) {

        }
    });
});

そしてreply_to_articleボタンをクリックすると、リクエストは単に終了せず、無制限に続きます...firebugをチェックすると、読み込み中の画像が常に終了せずに回転します... ESCを押すと何も返されません...他のすべてのブラウザでもチェックしました。 ..

また、ajaxファイルに直接アクセスしようとしましたが、機能します...しかし、このPOSTは機能しません

POSTではなくGETでどのように機能しますか?

4

1 に答える 1

0

CSRFセキュリティがオンになっていて、データをコントローラーに「POST」していると思います。この場合のコントローラーは、CSRF トークンをチェックおよび検証する Security コンストラクターを呼び出します。トークンが正しくない場合、500 HTTP エラーが返されます。したがって、最初に 500 エラーをチェックします。その場合、csrfトークンの処理方法が現在間違っていると推測しています。

csrf_name と csrf_value が何であるかはわかりませんが、そうあるべきです

名前は次のとおり<?php echo $this->security->get_csrf_token_name();?>で、値は次のとおりです。<?php echo $this->security->get_csrf_hash(); ?>

これらの値の両方を非表示フィールドに保存してから、スクリプトで使用します。

詳細については、この SO の質問をお読みください: ajax による codeigniter csrf 保護エラー

于 2012-06-27T06:05:25.147 に答える