Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

626
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda