XHR nutzt GET anstatt POST?
Mit folgendem code versuche ich zweck logins auf meinen Server zuzugreifen
var r = new XMLHttpRequest();
r.open("POST", "/user/login", true);
r.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
r.onreadystatechange = function () {
if (r.readyState != 4 || r.status != 200) return;
console.log(r.responseText);
if (r.responseText == '?incorrect') {
console.log('wrong password');
}
else if (r.responseText == 'correct') window.location.replace('/user/');
};
r.send('pwd=' + document.querySelector('#pwd-input').value);
Wenn ich den Code ausführe, steht in der Console der Seitenquelltext als Ergebnis. Der Server (Express) registriert eine GET request und auch im Netzwerktab von Chrome wird die request Methode mit GET angegeben. Hat jemand eine Idee warum und was ich versuchen könnte, außer Alternativen zur XHR zu nutzen?
1 Antwort
Vom Fragesteller als hilfreich ausgezeichnet
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
HTML, Webseite, programmieren
Deine Beobachtung kann ich nicht reproduzieren. Vielleicht testest du noch einen veralteten Stand deiner Anwendung oder schaust dir den falschen Request an.
Eine Alternative zur XHR-API wäre jedenfalls die Fetch-API:
const params = new URLSearchParams();
params.append("pwd", document.querySelector("#pwd-input").value);
fetch("/user/login", {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
body: params
})
.then(response => response.text())
.then(data => {
console.log(data);
if (data === "?incorrect") {
console.log("logged in");
}
else if (data === "correct") {
window.location.replace("/user/");
}
})
catch(error => console.error(error));