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

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

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 Report

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 Report

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 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!