2. CSRF token & Javascript, csrf toke ajax (ok)
https://viblo.asia/p/tap-15-csrf-laravel-07LKXBGrlV4
Ví dụ 0: Đọc ví dụ https://c-i-ph-n-m-m-tr-n-ubuntu-c-n-thi.gitbook.io/project/delete-record-using-ajax-request-in-laravel-example-ok
Sử dụng ajax và truyền token vào data
$(".deleteRecord").click(function(){
var id = $(this).data("id");
var token = $("meta[name='csrf-token']").attr("content");
$.ajax(
{
url: "users/"+id,
type: 'DELETE',
data: {
"id": id,
"_token": token,
},
success: function (){
console.log("it Works");
}
});
});Ví dụ 1:
C:\xampp\htdocs\reset\resources\views\products.blade.php
C:\xampp\htdocs\reset\routes\web.php
C:\xampp\htdocs\reset\app\Http\Controllers\ProductController.php

Ví dụ 2:
1. CSRF token & Javascript
Theo mặc định thì file resources/js/bootstrap.js sẽ lấy token từ thẻ meta với name csrf-token để đăng ký cho thư viện Axios HTTP. Lúc này mọi request đều được gửi cùng với token.
Nếu bạn không sử dụng thư viện này, bạn phải cấu hình thủ công. Chẳng hạn nếu bạn sử dụng thư viện Ajax jQuery thay cho Axios HTTP thì có thể làm như sau:
Đầu tiên tạo thẻ meta với name là csrf-token trong thẻ head.
Tiếp đó chỉ việc đăng ký ở file JS:
Như vậy, mỗi lần gửi request với ajax, bạn đã kèm theo token csrf rồi đấy.
Để kiểm chứng bạn có thể tạo một blade view home với nội dung sau:
Trong đoạn code trên mình đã khai báo thẻ meta chứa token csrf ở thẻ head. Sau đó tạo một form HTML, nhưng không khai báo thẻ @csrf đển tạo input token. Về Javascript, mình import thư việc jQuery, thực hiện setup như ở trên rồi thực thi gửi request với ajax đơn giản.
Để test thì chúng ta đăng ký các route sau:
Đây là kết quả sau khi submit form:
Last updated
Was this helpful?