web-dev-qa-db-ja.com

Axios / XMLHttpRequestは、実稼働環境でPOST)の代わりにGETを送信しています

私は非常に奇妙な問題に直面しています。アプリを本番環境に移行し、POSTリクエストの1つがPOSTに変わり、その後に同じURLへのGETリクエストが直接続き、POSTがバックエンドで受信されることはありません( Laravel)。 chromeネットワークタブでは、GETのように見えますが、BurpsuiteではPOSTリクエストを確認できます。

責任のあるコード

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();
    }
},

Form.postメソッドの内容

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);
    });
});
8
Maantje

この質問は、Larachat slackフォーラムでも私が回答しました。他の人のために、このような問題を抱えている次の質問に対する回答をここに示します。

ちょっとした裏話。チャットで、リダイレクトエラーである301エラーを受信して​​いることがわかりました。最近、ステージングサーバーのURLに投稿したときに同じエラーが発生しました。ローカルでは正常に機能していましたが、ステージングサーバーでは機能していませんでした。

問題は、投稿URLの最後のスラッシュであるように見えました。

したがって、https://example.com/post/to/への投稿は機能しません。

/を削除してhttps://example.com/post/toに投稿すると機能します。

26
coleander

情報のためだけに、私は同じことをしました-axiosリクエストがリダイレクトされていました。しかし、私にとっては、リダイレクトを引き起こすローカリゼーションミドルウェアであることが判明しました!

私はApiルートファイルに代替ルートを設定し(ここでもLaravel質問のように)、そのミドルウェアをバイパスします(おそらくルートが最初に行くべき場所です!)。 !男子生徒のエラーだと思います!

0
Nick A