为啥 Axios 会在我的 POST 请求中发送额外的 204 预检请求?

Posted

技术标签:

【中文标题】为啥 Axios 会在我的 POST 请求中发送额外的 204 预检请求?【英文标题】:Why is Axios sending an extra 204 preflight request with my POST request?为什么 Axios 会在我的 POST 请求中发送额外的 204 预检请求? 【发布时间】:2021-11-24 08:20:47 【问题描述】:

每当我使用 Vue.js (3.x) 发送 POST 请求时,都会使用 HTTP 状态代码 204 和“预检”类型向同一 URL 发出附加请求。

这是什么预检请求,我该如何解决它,以免它作为重复发送?

Register.vue

async submit() 
    this.button = true;

    try 
        const response = await axios.post(`register`, this.form);

        if(response.data.success == false)
        
            console.log(response.data.message);
        
        else
        
            this.$router.push('/');
        
    
    catch (error)
    
        let  errors  = error.response.data;

        this.button = false;
        this.errors = ;

        Object.keys(errors).forEach(element => 
            this.errors[element] = errors[element][0];
        );
    
,

【问题讨论】:

【参考方案1】:

这不是问题,由浏览器设计控制。

这不是 Axios 或任何其他 HTTP 客户端决定发送的内容。

preflight request 是一个 CORS OPTIONS 请求,由浏览器自动发送,专门用于检查服务器是否支持您尝试根据 method、headers 和 origin 进行的调用。

如果请求没有失败,您可以放心地忽略这些请求,因为这意味着服务器不会基于上述因素拒绝您的请求。

您的问题与端点不存在有关,因为您收到了 404 Not Found error - 检查端点是否存在或者您是否正确调用它。

【讨论】:

以上是关于为啥 Axios 会在我的 POST 请求中发送额外的 204 预检请求?的主要内容,如果未能解决你的问题,请参考以下文章

axios 不会将 post 数据发送到后端

从Vue js到Laravel的axios.post数组,在我的请求中只得到[object Object]

axios发送post请求为啥返回字符串不是对象

axios post 请求挂在有效请求上

Vue JS Axios Post 请求向 PHP 发送 Null

Vue在axios post请求的对象中发送一个空参数