Axios / XMLHttpRequest在生产环境中发送GET而不是POST

时间:2017-11-09 17:49:26

标签: laravel post get xmlhttprequest axios

我遇到了一个非常奇怪的问题。我们正在将一个应用程序投入生产,其中一个POST请求变为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();
    }
},

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

3 个答案:

答案 0 :(得分:18)

我在Larachat闲谈论坛上也回答了这个问题,对于其他人来说,这里的答案就是下一个有这样一个问题的答案。

只是一个小故事。在聊天中,我们发现它收到301错误,这是一个重定向错误。 我最近在登台服务器上发布到网址时遇到了同样的错误,它在本地工作正常但在登台服务器上却没有。

问题似乎是帖子网址末尾的斜线。

因此发布到https://example.com/post/to/将无效。

删除/并发布到https://example.com/post/to即可。

答案 1 :(得分:0)

仅仅是为了获取信息,我有同样的事情 - axios请求被重定向。对我来说,事实证明是一些导致重定向的本地化中间件!

我在Api路线文件中设置了另一条路线(在问题中再次使用Laravel),绕过该中间件(可能首先路线应该在哪里!)。一切都好!我想是小学生的错误!

答案 2 :(得分:0)

我确认先前的回答。从本地环境到生产环境,我都遇到了同样的问题。

对端点/ api / user / store /的调用可能会使用301状态代码重定向到/ api / user / store,并且此调用被解释为显然无法到达的GET(因为它不在路由列表中) 。所以它不起作用。

一个解决方案可以是在Apache配置上工作(修剪最后一个斜杠),但是我更喜欢适应我的Axios调用。