Короче говоря: только в Chrome и Safari значения из формы входа в систему иногда вставляются в URL пользователя, даже если фактический вход в систему осуществляется через AJAX.
http://my-site.example/?name=user&pw=xxx&challenge=b1be8ad7aac242...
Об этом неоднократно сообщалось, и я сам видел, как это происходит, но не смог воспроизвести это сам, тем более понять, что происходит на земле. Вот к чему сводится форма входа:
<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>
Фактический запрос POST даже не содержит параметр вызова:
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);
}
И при успешном входе в систему пользователь перенаправляется обратно на ту же страницу (= принудительная перезагрузка), если и только если у него другой языковой параметр по умолчанию:
location.href = "http://" + location.host + location.pathname;
Есть идеи?