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

619
Vistas
Llamada al método no definido Symfony\Component\HttpFoundation\Response::header()

Hola, estaba usando un cors middleware que parece funcionar bien hasta que agregué Laravel Passport ahora hay un problema con él ... muestra el error

 Call to undefined method Symfony\Component\HttpFoundation\Response::header() on line number 36

Este es mi software intermedio:

 <?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Response; class Cors { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { // ALLOW OPTIONS METHOD $headers = [ 'Access-Control-Allow-Origin' => '*', 'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, DELETE', 'Access-Control-Allow-Headers' => "Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Authorization , Access-Control-Request-Headers" ]; if ($request->getMethod() == "OPTIONS") { // The client-side application can set only headers allowed in Access-Control-Allow-Headers return Response::make('OK', 200, $headers); } $response = $next($request); foreach ($headers as $key => $value) $response->header($key, $value); return $response; } }

el problema es después de la condición if .. Cualquier ayuda será apreciada gracias

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

0

Hola, me enfrenté al mismo problema. Parece que fue un error en Passport y hay muchos desarrolladores en la misma situación. Acabo de encontrar la solución a este problema. La razón por la que recibimos este error es porque el objeto de respuesta que obtenemos en el middleware suele ser una instancia de la clase Illuminate\Http\Response que podemos establecer encabezados de respuesta usando el encabezado del método header('Header-Key', 'Header-Value') mientras que la solicitud manejada por Passport será una instancia de Symfony\Component\HttpFoundation\Response , por eso obtuvimos el error Call to undefined method Symfony\Component\HttpFoundation\Response::header()

A continuación se muestra el código que utilizo para abordar este error y ahora todo funciona bien. Espero que ayude a otros desarrolladores a hacerse una idea de cómo solucionarlo y luego adaptarlo a su código.

 $response = $next($request); $IlluminateResponse = 'Illuminate\Http\Response'; $SymfonyResopnse = 'Symfony\Component\HttpFoundation\Response'; $headers = [ 'Access-Control-Allow-Origin' => '*', 'Access-Control-Allow-Methods' => 'POST, GET, OPTIONS, PUT, PATCH, DELETE', 'Access-Control-Allow-Headers' => 'Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Authorization , Access-Control-Request-Headers', ]; if($response instanceof $IlluminateResponse) { foreach ($headers as $key => $value) { $response->header($key, $value); } return $response; } if($response instanceof $SymfonyResopnse) { foreach ($headers as $key => $value) { $response->headers->set($key, $value); } return $response; } return $response;

Y en mi Kernel.php

 protected $middleware = [ \App\Http\Middleware\Cors::class, // .... ];
about 4 years ago · Santiago Trujillo Denunciar

0

Parece que desde su aplicación está obteniendo HttpFoundation\Response , que no tiene el método de header . Entonces, en su lugar, puede intentar establecer el encabezado en la variable de headers de HttpFoundation\Response .

 foreach ($headers as $key => $value) $response->headers->set($key, $value); return $response;
about 4 years ago · Santiago Trujillo Denunciar

0

Tengo este problema cuando hice esto

 return Response::stream($callback, 200, $headers);

Lo resuelvo simplemente colocando una barra inclinada ( \ ) antes de Respuesta como esta:

 return \Response::stream($callback, 200, $headers);

Pruebe esta solución: Gracias

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