csrf with ajax support

แก้ไขไฟล์ filter.php ให้รองรับ ajax เป็นดังนี้

Route::filter('csrf', function()
{
    $isAjax = Request::header('x-csrf-token');
    if($isAjax)
    {
        if (Session::token() != Request::header('x-csrf-token'))
        {
             throw new Illuminate\Session\TokenMismatchException;
        }
    }
    else if (Session::token() != Input::get('_token'))
    {
        throw new Illuminate\Session\TokenMismatchException;
    }
});

และเพิ่ม meta csrf ลงใน view

<meta name="csrf-token" content="<?= csrf_token() ?>">

ที่ jquery ajax ใส่ดังนี้

$.ajax({
        type: "POST",
        url: "../yoururl",
        headers: {
            'X-CSRF-Token': $('input[name="_token"]').val()
        },
        data: { data:post }
    })
    .done(function( result ) {
                ...
        });

Related posts:

This entry was posted in laravel4. Bookmark the permalink.