我遇到了一个非常奇怪的问题。我们正在将一个应用程序投入生产,其中一个POST请求变成了一个直接跟随同一URL的GET请求,并且后端(Laravel)从未收到这个POST请求。在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();
}
},
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);
});
});
http
流量重定向到https
,那么任何http
的POST请求都将被重定向到https
,但将被转换为GET请求。你可以查看这个答案以获得稍微详细一些的解释。 - patricus