2015-06-06 20 views
8

Ban đầu, tôi đã viết tất cả mã JavaScript ngay trong trang HTML của mình bằng cách sử dụng thẻ <script>.Làm thế nào để bao gồm csrf_token() trong một tệp js bên ngoài trong Laravel?

Cuộc gọi bài trong jQuery trong JavaScript giống như thế này.

$.post('store',{'_token':'{{csrf_token()}}'}, function(data){ /*a bunch of code*/ }); 

Mã hoạt động tốt. Nhưng, sau đó tôi đặt tất cả tập lệnh của mình vào một tệp js bên ngoài. Và mã không hoạt động nữa.

Tôi có vấn đề với các {{csrf_token()}}, lỗi là

TokenMismatchException trong compiled.php

Tôi nên làm gì nếu tôi muốn js file bên ngoài với Laravel?

Trả lời

27
  1. thêm <meta> đi kèm theo chiếc thẻ để bố trí lưỡi:
<meta name="_token" content="{{ csrf_token() }}"> 
  1. thiết lập yêu cầu ajax:
$(function() { 
    $.ajaxSetup({ 
    headers: { 
     'X-CSRF-Token': $('meta[name="_token"]').attr('content') 
    } 
    }); 
}); 

Bây giờ bạn có thể sử dụng $.post() mà không cần cung cấp _token mỗi lần.

+1

@FaizuddinMohammed Tài liệu này có thể tìm thấy tại đây (http://laravel.com/docs/5.0/routing#csrf-protection). – patricus

+0

Ow .. yeah. Điều đó rất hữu ích. Cảm ơn! –

Các vấn đề liên quan