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

286
Vistas
cakephp3: no se puede obtener el encabezado de autorización dentro del controlador

Estoy desarrollando una API usando el framework CakePHP 3. Ahora estoy enviando una solicitud GET del cliente POSTMAN. El usuario pasará una clave API en el encabezado. ingrese la descripción de la imagen aquí

Quiero buscar este encabezado en mi función de controlador.

Así es como se ve mi controlador

 namespace Api\Controller; use Cake\Auth\DefaultPasswordHasher; use Api\Controller\AppController; use Cake\Cache\Cache; use Cake\Http\ServerRequest; class ApiController extends AppController { public function initialize() { parent::initialize(); $this->loadComponent('RequestHandler'); } public function myinfo() { if($this->request->is('get')) { $key = $this->request->getHeaderLine('Authorization'); $this->set('key', $key); } $this->set('_serialize', ['key']); } }

El error que recibo es: HeaderLine is not a function

También probé algunas opciones más:

 $acceptHeader = $this->request->getHeader('Authorization');

pero esto también arrojó un error similar. El encabezado no es una función.

Referencia: Enlace

Versión de CakePHP: 3.3.5

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

0

Como dijo @ndm en los comentarios de OP, el último ejemplo en el documento vinculado debería resolver su problema. Está utilizando una versión anterior a la 3.4, por lo que debe utilizar:

 // Prior to 3.4.0 $key = $this->request->header('Authorization');
about 4 years ago · Santiago Trujillo Denunciar

0

Consulte el documento para leer el encabezado HTTP

Here mencionó que "Le permite acceder a cualquiera de los encabezados HTTP_* que se usaron para la solicitud". Significa que solo lee encabezados http como

  • Solicitud HTTP
  • Anfitrión
  • Conexión
  • Solicitudes inseguras de actualización
  • Agente de usuario
  • Aceptar
  • Aceptar-Codificación
  • Aceptar-Idioma

También mencionó que "Si bien algunas instalaciones de apache no hacen accesible el encabezado de Autorización, CakePHP lo hará disponible a través de métodos específicos de apache según sea necesario".

Entonces para la solución

Todos tienen diferentes configuraciones oscuras que puede modificar para anular este comportamiento, pero deberá determinar exactamente qué módulo tiene la culpa.

Puede solucionar este problema pasando el encabezado directamente a PHP a través de env:

 SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

Consulte también: Zend Server Windows: el encabezado de autorización no se pasa al script PHP

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