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

911
Views
Lectura de encabezados de respuesta con Fetch API

Estoy en una extensión de Google Chrome con permisos para "*://*/*" y estoy tratando de cambiar de XMLHttpRequest a Fetch API .

La extensión almacena los datos de inicio de sesión ingresados por el usuario que solían colocarse directamente en la llamada open() de XHR para autenticación HTTP, pero en Fetch ya no se puede usar directamente como parámetro. Para HTTP Basic Auth, eludir esta limitación es trivial, ya que puede configurar manualmente un encabezado de autorización:

 fetch(url, { headers: new Headers({ 'Authorization': 'Basic ' + btoa(login + ':' + pass) }) } });

Sin embargo, HTTP Digest Auth requiere más interactividad; necesita leer los parámetros que el servidor le envía con su respuesta 401 para crear un token de autorización válido. Intenté leer el campo de encabezado de respuesta WWW-Authenticate con este fragmento:

 fetch(url).then(function(resp) { resp.headers.forEach(function(val, key) { console.log(key + ' -> ' + val); }); }

Pero todo lo que obtengo es esta salida:

 content-type -> text/html; charset=iso-8859-1

Lo cual en sí mismo es correcto, pero aún faltan alrededor de 6 campos más según las Herramientas para desarrolladores de Chrome. Si uso resp.headers.get("WWW-Authenticate") (o cualquiera de los otros campos), solo obtengo null .

¿Alguna posibilidad de llegar a esos otros campos usando la API Fetch?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Hay una restricción para acceder a los encabezados de respuesta cuando usa Fetch API sobre CORS. Debido a esta restricción, solo puede acceder a los siguientes encabezados estándar:

  • Cache-Control
  • Content-Language
  • Content-Type
  • Expires
  • Last-Modified
  • Pragma

Cuando está escribiendo código para la extensión de Google Chrome, está utilizando CORS , por lo tanto, no puede acceder a todos los encabezados. Si controla el servidor, puede devolver información personalizada en el body de la respuesta en lugar de headers

Más información sobre esta restricción: https://developers.google.com/web/updates/2015/03/introduction-to-fetch#response_types

over 4 years ago · Santiago Trujillo Report

0

Si NO es CORS:

Fetch no muestra encabezados durante la depuración o si responde console.log .

Tienes que usar la siguiente manera para acceder a los encabezados.

 response.headers.get('x-auth-token')
over 4 years ago · Santiago Trujillo Report

0

Desde MDN

También puede obtener todos los encabezados accediendo al iterador de entradas.

 // Display the key/value pairs for (var pair of res.headers.entries()) { console.log(pair[0]+ ': '+ pair[1]); }

Además, ten en cuenta esta parte:

Por razones de seguridad, algunos encabezados solo pueden ser controlados por el agente de usuario. Estos encabezados incluyen los nombres de encabezados prohibidos y los nombres de encabezados de respuesta prohibidos.

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