Verificamos completamente cada enunciado en nuestra web con el objetivo de mostrarte en todo momento información con la mayor veracidad y actualizada.
Solución:
Request.redirect podría ser "follow"
, "error"
o "manual"
.
Si es “seguir”, la API fetch() sigue la respuesta de redireccionamiento (código de estado HTTP = 301,302,303,307,308).
Si es “error”, la API fetch() trata la respuesta de redirección como un error.
Si es “manual”, la API fetch() no sigue la redirección y devuelve una respuesta filtrada de redirección opaca que envuelve la respuesta de redirección.
Ya que desea redirigir después de una búsqueda, simplemente utilícelo como
fetch(url, method: 'POST', redirect: 'follow')
.then(response =>
// HTTP 301 response
)
.catch(function(err)
console.info(err + " url: " + url);
);
Eche un vistazo a la URL de propiedades redirigida del objeto de respuesta: Doc dice que esto es
“Experimental. Espere que el comportamiento cambie en el futuro”
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.
En mis experimentos, esta propiedad ‘url’ era exactamente igual que el valor del encabezado Ubicación en Chrome (Versión 75.0.3770.100 (Compilación oficial) (64 bits)) Consola de red.
El código para lidiar con el enlace de redirección se ve así:
fetch(url, method: 'POST' )
.then(response =>
// HTTP 301 response
// HOW CAN I FOLLOW THE HTTP REDIRECT RESPONSE?
if (response.redirected)
window.location.href = response.url;
)
.catch(function(err)
console.info(err + " url: " + url);
);
Lo probé trabajando con el script del mismo origen react.js con la llamada AJAX fetch frente a las redirecciones 302 del servidor.
PD En las aplicaciones SPA, las respuestas de redireccionamiento son poco probables, tal vez esta sea la razón por la cual los proveedores de ajax prestan poca atención a esta funcionalidad. Ver también estas discusiones: aquí aquí
Tengo un problema similar y creo que la respuesta para buscar dentro de React es la misma que para ajax dentro de JQuery: si puede detectar que la respuesta es una redirección, actualice window.location.href con la respuesta .url
Ver por ejemplo: Cómo administrar una solicitud de redirección después de una llamada jQuery Ajax
Tenga en cuenta que “si puede detectar que la respuesta es una redirección” podría ser la parte complicada. Obtener respuestas puede contienen un indicador de ‘redireccionamiento’ (consulte https://developer.mozilla.org/en-US/docs/Web/API/Response), pero descubrí que ese no es el caso en Chrome. También encuentro en Chrome que obtengo una respuesta de estado 200 en lugar de un estado de redireccionamiento, pero eso podría ser algo con nuestra implementación de SSO. Si está utilizando un polyfill fetch con IE, deberá verificar si response.url está incluido o no.
Agradecemos que desees apoyar nuestra misión escribiendo un comentario o dejando una valoración te lo agradecemos.