1) utilizan diferentes código de estado de 301 (2 **) (si la solicitud de ajax) y controla la redirección en el lado del cliente:
var STATUS = {
REDIRECT: 280
};
$.post('/redirected', {}, function(response, status, request) {
if (status == STATUS.REDIRECT) {
// you need to return the redirect url
location.href = response.redirectUrl;
} else {
$('#content').html(request.responseText);
}
});
2) no redirijan:
uso esa en "redirigir el patrón" = redirigir después de la solicitud (no desea permitir que el usuario actualice la solicitud, etc.)
Con la solicitud ajax, esto no es necesario, por lo que cuando la solicitud es ajax, En lugar de eso, reenvío (solo reenviar a un controlador diferente, depende de su servidor mework, o lo que estás usando ...). Los navegadores no almacenan en caché las solicitudes POST.
En realidad, no sé cuál es la razón por la que lo necesita, por lo que puede que no sea tan útil para usted. Esto es útil cuando el servidor devuelve diferentes respuestas para las peticiones Ajax que las peticiones comunes, porque cuando la solicitud de redireccionamiento del navegador Ajax, la solicitud no es redirigida XMLHttpRequest ...
[actualizada]
Se puede acceder a las cabeceras (de solicitud redirigida) así:
$.post('redirected', {}, function(r, s, req) {
req.getAllResponseHeaders();
req.getResponseHeader('Location');
});
debe haber encabezado 'Localización', pero depende del servidor, que los encabezados se envían de vuelta ...
Acaba de obtener lo que está en los encabezados de respuesta. – epascarello
xmlHttpRequest.getAllResponseHeaders() no parece dar ninguna indicación de la URL para la que estaba. – Snea
¿Alguien ha encontrado alguna solución en el lado del cliente? Cómo capturar una url de redirección si no tienes el control de un servidor web. –