簡単に言うと、Chrome と Safari でのみ、実際のログインは AJAX 経由で POST されますが、ログイン フォームの値がユーザーの URL に貼り付けられることがあります。
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;
何か案は?