laravel - error - cómo arreglar el token CSRF no encontrado en la consola
1) ¿De dónde viene este error?
Este error proviene de resources / js / bootstrap.js
2) ¿Por qué ocurrió este error?
vea el siguiente fragmento de código, es un intento de averiguar la metaetiqueta del nombre csrf-token, si se encuentra el token, a continuación, agregue como encabezados a axios http library.else mostrar error
let token = document.head.querySelector(''meta[name="csrf-token"]'');
if (token) {
window.axios.defaults.headers.common[''X-CSRF-TOKEN''] = token.content;
} else {
console.error(''CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token'');
}
3) ¿Cuál es la solución?
El middleware VerifyCsrfToken verificará el encabezado de solicitud X-CSRF-TOKEN
.
Podrías almacenar el token en una metaetiqueta HTML:
<meta name="csrf-token" content="{{ csrf_token() }}">
Generará el token como se muestra en la imagen:
Para solicitud de Ajax:
$.ajaxSetup({
headers: {
''X-CSRF-TOKEN'': $(''meta[name="csrf-token"]'').attr(''content'')
}
});
Para VueJS 2.0:
Vue.http.headers.common[''X-CSRF-TOKEN''] = document.head.querySelector(''meta[name="csrf-token"]'').content;
Lea más sobre el token CSRF: https://laravel.com/docs/5.8/csrf
Cuando use JavaScript en su archivo bootstrap.js encontrará estas líneas
let token = document.head.querySelector(''meta[name="csrf-token"]'');
if (token) {
window.axios.defaults.headers.common[''X-CSRF-TOKEN''] = token.content;
} else {
console.error(''CSRF token not found: https://laravel.com/docs/csrf#csrf-x-
csrf-token'');
}
Reemplace document.head.querySelector(''meta[name="csrf-token"]'');
por $(''meta[name="csrf-token"]'').attr(''content'');
Podría ser
let token = $(''meta[name="csrf-token"]'').attr(''content'');
if (token) {
window.axios.defaults.headers.common[''X-CSRF-TOKEN''] = token;
} else {
console.error(''CSRF token not found: https://laravel.com/docs/csrf#csrf-x-
csrf-token'');
}
Esto también resuelve las solicitudes post-axios cuando tiene formularios en un componente vue.
Puedes agregar la siguiente etiqueta meta
<meta name="csrf-token" content="{{ csrf_token() }}">
Si está utilizando Vue, este es el camino a seguir:
Vue.http.interceptors.push(function (request, next) {
request.headers[''X-CSRF-TOKEN''] = Laravel.csrfToken;
next();
});
o
<script>
window.Laravel = <?php echo json_encode([
''csrfToken'' => csrf_token(),
]); ?>
</script>