IE で Django の CSRF トークンエラー

Django の CSRF 対策の {% csrf_token %} をフォーム内に入れている時に、IE でそのフォームを送信すると CSRF の 403 エラーが出てしまう。他のブラウザなら大丈夫。

原因はフォームの二重送信防止のために入れていた JavaScript だった。

$('form').on('submit', function () {
    $(this).attr('disabled', 'disabled');
});

上がダメだった例。下のように変更して IE でも大丈夫になった。

$('form').on('submit', function() {
    if ($(this).data('submitted')) {
        return false;
    } else {
        $(this).data('submitted', true);
        return true;
    }
});
Last updated on July 7, 2015