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

251
Views
¿Cómo agregar `?token=...` a la URL de redireccionamiento cuando la API de recuperación obtuvo 302?

Como título. Soy muy nuevo en este tema, así que usaré el ejemplo para describir lo que quiero lograr:

  1. Estoy navegando en un sitio web de Git-pages con algunas imágenes allí. Cuando hice clic en esas imágenes, descubrí que la URL se adjunta con ?token=DSKLFJOS... .
  2. Ahora, si solo copio la URL sin este token, obtendré 404 como respuesta.
  3. Descubrí que el 404 es en realidad la segunda solicitud. La primera solicitud es 302 y el token se puede encontrar en la respuesta.
  4. Entonces, lo que quiero lograr es que quiero usar la API de fetch para intentar obtener el token de 302 y agregarlo a la URL de la solicitud (redireccionamiento) ?token=... para que la segunda solicitud obtenga 200 .

Mi pensamiento: tal vez esto se pueda lograr después de obtener más información sobre las credentials y/o las opciones de redirect de la API de fetch . ¡Pero no estoy seguro de esto!

Este es el código actual que fallará con 404 (en la segunda solicitud). No está escrito por mí, así que no lo entiendo. (y lamento no poder publicar el código completo ya que es un contenido privado)

 fetch(filePath) .then(response => response.arrayBuffer()) .then(arrayBuffer => callback(arrayBuffer, arrayBuffer.byteLength));

Gracias por tu lectura. Si alguna de mis ideas es incorrecta, no dude en corregirme y publicarla como respuesta.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Tal vez algo como esto funcione. Básicamente, solo verifica el código de estado, y si es 302, volverá a buscar la respuesta con el token, luego, si el estado aún es mayor que 300, devuelve nulo, si no, devuelve la respuesta JSON.

 async function getImage(url, token) { let response = await fetch(url); // You can also say if (response.status >= 300 && response.status < 400) if (response.status === 302) { response = await fetch(`${url}?token=${token}`); } if (response.status >= 300) { return null; } return response.json(); }

Con la ubicación de los encabezados sería algo como esto:

 async function getImage(url) { let response = await fetch(url); if (response.status === 302) { response = await fetch(`${url}?token=${response.headers.get('location')}`); } return response.json(); }

Elimino el segundo si solo para simplificar la respuesta y solo teniendo en cuenta que la solicitud sería exitosa.

about 4 years ago · Juan Pablo Isaza Report

0

Puede realizar otra solicitud con la nueva URL con fetch(originalResponse.url + token) .

La propiedad de solo lectura url de la interfaz Response contiene la URL de la respuesta. El valor de la propiedad url será la URL final obtenida después de cualquier redireccionamiento.

de https://developer.mozilla.org/en-US/docs/Web/API/Response/url

Aquí hay un ejemplo:

 let token = "abcdef" fetch("page-that-redirects.com/") .then(response => { if (response.status === 404) { fetch(response.url + "?token=" + token) .then(/* do something */) } }) // Or with async/await: let response = await fetch("page-that-redirects.com/") if (response.status === 404) { let newResponse = await fetch(response.url + "?token=" + token) /* do something */ }
about 4 years ago · Juan Pablo Isaza 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!