valores del formulario añadiendo Safari y Chrome a URL
-
30-09-2019 - |
Pregunta
En resúmen:. En Chrome y Safari solamente, los valores de un formulario de acceso son a veces pegar en el URL del usuario, a pesar de que el inicio de sesión real se publica a través de AJAX
http://my-site.example/?name=user&pw=xxx&challenge=b1be8ad7aac242...
Se nos ha informado en varias ocasiones y he visto que suceda a mí mismo, pero han sido incapaces de reproducir yo mismo, y mucho menos averiguar qué demonios está pasando. Esto es lo que la forma de la conexión se reduce a:
<form name="login">
<input type="Text" name="name">
<input type="password" name="pw">
<input type="hidden" name="challenge">
<input type="button" onclick='JavaScript:xmlhttpPost("/php/login.php")'>
</form>
La Solicitud publicada real ni siquiera contiene el parámetro reto:
function xmlhttpPost(strURL) {
if (window.XMLHttpRequest) {
self.xmlHttpReq = new XMLHttpRequest();
} else if (window.ActiveXObject) {
self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
self.xmlHttpReq.open('POST', strURL, true);
...
query = 'name=' + encodeURIComponent(name) + '&pw=' + encodeURIComponent(hash) + '&lpw=' + encodeURIComponent(legacy_hash);
self.xmlHttpReq.send(query);
}
Y en el inicio de sesión correcto, el usuario es redirigido de nuevo a la misma página (= obligado a volver a cargar) si y sólo si tienen una configuración de idioma distinto del predeterminado:
location.href = "http://" + location.host + location.pathname;
¿Alguna idea?
Solución
Iin los casos que usted describe, en realidad la forma que se envía, probablemente debido a que el usuario tiene desactivado JavaScript o se produce un error de script en xmlhttpPost
.
El formulario se envían como una solicitud GET
en algunos navegadores, ya que no especifica una propiedad method
. (Creo que es el valor predeterminado GET
correcta de acuerdo a la norma, pero algunos navegadores difieren de estos). Por lo tanto, los datos del formulario va a terminar en la URL.
Dar la forma de un method="POST"
:. Que va a arreglar los datos de la contraseña en la parte URL
Otros consejos
¿Sabes lo que más detestan de desbordamiento de pila? El hecho de que, al hacer usted presenta incluso sus problemas más difíciles en lo más simple y la reducción de una forma posible, a menudo tropiezan con las soluciones a sí mismo, por lo general alrededor de 5 segundos después de la presentación.
Esta vez, resulta que presionar ENTER estaba causando Safari / Chrome (WebKit) para enviar el formulario y se adhieren a los parámetros de la URL. La cura es simple:
<form name="login" onSubmit='JavaScript:return false;'>
Y un consejo o' el sombrero aquí: