Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

272
Vistas
React Fetch to Laravel API crea una nueva sesión

Mi aplicación usa React en el front-end y Laravel 5.4 en el back-end. Estoy usando fetch() para solicitar datos del backend. El problema es que se crean dos sesiones cuando se carga la página. El CSRF Middleware lanza una TokenMismatchException cuando se realiza una solicitud POST porque el token que se envía coincide con la primera sesión que se crea, pero se compara con la segunda.

Estoy configurando el token en app.blade.php

<meta name="_token" content="{{ csrf_token() }}">

Y agarrando el token en la configuración de búsqueda

 fetchConfig = { headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') }, credentials: 'same-origin' }}

Aquí están las sesiones descifradas:

 a:3:{s:6:"_token";s:40:"7obvOzPaqqJDtVdij8RaqrvmTFLjKA2qnvYMxry6";s:9:"_previous";a:1:{s:3:"url";s:24:"http://localhost/page";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}} a:3:{s:6:"_token";s:40:"5Aiws9Qy72YzlkfWX81zkhzrSeiMDYjFWiLeDAwN";s:9:"_previous";a:1:{s:3:"url";s:41:"http://localhost/api/page";}s:6:"_flash";a:2:{s:3:"old";a:0:{}s:3:"new";a:0:{}}}

URL de solicitud: http://localhost/page

URL de la API: http://localhost/api/page

¿Cómo puedo evitar que se cree una nueva sesión cuando la aplicación React realiza su solicitud GET inicial?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Laravel genera automáticamente un "token" CSRF para cada sesión de usuario activa administrada por la aplicación. Este token se utiliza para verificar que el usuario autenticado es el que realmente realiza las solicitudes a la aplicación. : https://laravel.com/docs/5.4/csrf

Las API no tienen estado. No hay nada como session en las API. Por lo tanto, no debe usar el token CSRF en la API. Si revisaKernel.php de laravel. Verá que Tylor no agregó el middleware VerifyCsrf en el grupo API. Lo que sugiere que CSRF solo se usa en la solicitud que tiene sesión, es decir, solicitud con estado. Le recomendaría que use el sistema de autenticación basado en JWT para la API. Para obtener más información sobre JWT , consulte aquí .

Puede usar este paquete laravel para JWT: https://github.com/tymondesigns/jwt-auth

about 4 years ago · Santiago Trujillo Denunciar

0

No estoy seguro de cuál es su URL de solicitud y cuál es su URL de API de destino. Asegúrese de que ambos estén en el mismo dominio (incluido el subdominio).

Creo que es una buena idea deshabilitar la validación CSRF solo para las rutas API, ya que pueden ser utilizadas por otros dominios, aplicaciones nativas, etc.

Puede hacerlo agregando el siguiente archivo de clase: app/Http/Middleware/VerifyCsrfToken.php

 <?php namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier; class VerifyCsrfToken extends BaseVerifier { /** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ 'api/*', ]; }

Asegúrate de editar Kernal.php para apuntar a la nueva clase:

 protected $middleware = [ 'csrf' => 'App\Http\Middleware\VerifyCsrfToken' ];

Para obtener más información sobre cómo Laravel usa CSRF, consulte este video de laracast

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda