2017-11-09 4 views
1

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); 
    }); 
}); 
+0

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

Antwort

3

Diese Frage auch von mir in der Larachat slack Forum, und für die anderen willen hier ist die Antwort für die beantwortet wurde nächste mit einem solchen Problem.

Nur ein wenig zurück Geschichte. Im Chat haben wir herausgefunden, dass es einen 301 Fehler erhalten hat, der ein Umleitungsfehler ist. Ich hatte in letzter Zeit den gleichen Fehler beim Posten in einer URL auf einem Staging-Server, es funktionierte lokal, aber nicht auf dem Staging-Server.

Das Problem schien ein Schrägstrich am Ende der Post-URL zu sein.

So wird die Buchung auf https://example.com/post/to/ nicht funktionieren.

Entfernen der / und Buchung auf https://example.com/post/to wird funktionieren.

Verwandte Themen