Ich stoße auf ein sehr seltsames Problem. Wir setzen eine App in Produktion und eine der POST-Anfrage wird zu einem POST, gefolgt direkt von einer GET-Anfrage an die gleiche URL und der POST wird niemals im Backend (Laravel) empfangen. In der Chrome-Netzwerk-Registerkarte sieht es nur wie ein GET aus, aber mit Burpsuite können wir die POST-Anfrage sehen.Axios/XMLHttpRequest sendet GET anstelle von POST in der Produktionsumgebung
Der Code verantwortlich
async store() {
// This prints post
console.log(this.method());
await this.form[this.method()]('/api/admin/users/' + (this.isUpdate() ? this.id : ''));
if (!this.isUpdate()) {
this.form.reset();
}
},
Die form.post Methode Inhalt
return new Promise((resolve, reject) => {
axios[requestType](url, this.data())
.then(response => {
this.busy = false;
this.onSuccess(response.data);
resolve(response.data);
})
.catch(error => {
this.busy = false;
if (error.response.status == 400) {
return this.displayErrors(error.response.data)
}
this.onFail(error.response.data.errors);
reject(error.response.data);
});
});
Sie werden wahrscheinlich in eine 301/302-Weiterleitung geraten. Wenn Ihr Produktionsserver beispielsweise versucht, den gesamten HTTP-Verkehr zu "https" umzuleiten, wird jeder POST nach "http" zu "https" umgeleitet, aber in eine GET-Anfrage umgewandelt. Sie können [diese Antwort] (https://stackoverflow.com/questions/35399126/laravel-5-htaccess-https-redirect-on-post-routes-doesnt-work) für eine etwas längere Erklärung sehen. – patricus