Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

269
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!