Vuelva a cargar la ventana del navegador después de la POST sin solicitar al usuario que reenvíe los datos de la POST

Cuando un usuario visita mi sitio web, hay un enlace "Iniciar sesión" en cada página. Al hacer clic en esto, se usa JavaScript para mostrar una ventana de superposición donde se le solicita al usuario sus credenciales. Después de ingresar estas credenciales, se realiza una llamada Ajax al servidor web para validarlas; si son válidos, se devuelve una cookie de ticket de autenticación y la página se vuelve a cargar para que se muestre cualquier contenido en la página que sea específico para los usuarios autenticados o el (ahora) usuario actualmente conectado.

Estoy logrando la recarga de la página a través del script usando:

window.location.reload();

Esto funciona maravillosamente para páginas cargadas a través de una solicitud GET (la gran mayoría), pero algunas páginas usan formularios de devolución. Entonces, si un usuario va a una de estas páginas, realiza una devolución de datos y luego elige iniciar sesión, cuandowindow.location.reload() las secuencias de comandos se les solicita con el cuadro de diálogo preguntando si desean volver a enviar el cuerpo POST.

Pensé que para evitar esto podría decirle al navegador que volviera a cargar la página, así que intenté:

window.location.href = window.location.href;

Pero el navegador no realiza ninguna acción con la declaración anterior, supongo porque piensa que la nueva URL es la misma que la anterior. Si cambio lo anterior a:

window.location.href = window.location.pathname;

Vuelve a cargar la página, pero pierdo los parámetros de la cadena de consulta.

Mi solución actual es suficiente, pero no bonita: en resumen, agrego un parámetro de cadena de consulta al actualwindow.location.href valor y luego asignarlo de nuevo awindow.location.href llamandoreloadPage("justLoggedIn"), donde elreloadPage la función es:

function reloadPage(querystringTackon) {
    var currentUrl = window.location.href;

    if (querystringTackon != null && querystringTackon.length > 0 && currentUrl.indexOf(querystringTackon) < 0) {
        if (currentUrl.indexOf("?") < 0)
            currentUrl += "?" + querystringTackon;
        else
            currentUrl += "&" + querystringTackon;
    }

    window.location.href = currentUrl;
}

Esto funciona, pero da como resultado que la URL seawww.example.com/SomeFolder/SomePage.aspx?justLoggedIn, lo que parece hortera.

¿Hay alguna manera en JavaScript para que realice una recarga GET y no solicite al usuario que vuelva a enviar los datos POST? Necesito asegurarme de que no se pierdan los parámetros de cadena de consulta existentes.

Respuestas a la pregunta(13)

Su respuesta a la pregunta