Axios同一请求发送两次 解决方案

31 篇文章 0 订阅

目录

出现原因

简单请求与非简单请求:

 axios设置header信息


原文地址: http://www.cnblogs.com/JimmyBright/p/7681097.html
简单请求与非简单请求区别部分转载自:https://www.cnblogs.com/renpingsheng/p/7688134.html

出现原因

所有跨域的js在提交post请求的时候,如果服务端设置了可跨域访问

public static function setCrossDomain()
    {
        header('Access-Control-Allow-Origin: *');
        header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
        header('Access-Control-Allow-Methods: GET, POST, PUT');
    }

都会默认发送两次请求,第一次是预检请求,查询是否支持跨域,第二次才是真正的post提交。

JS中出现这个现象原因在于你发送了一个非简单请求。

简单请求与非简单请求

* 请求方式:HEAD,GET,POST
* 请求头信息:
    Accept
    Accept-Language
    Content-Language
    Last-Event-ID
    Content-Type 对应的值是以下三个中的任意一个
                        application/x-www-form-urlencoded
                        multipart/form-data
                        text/plain

只有同时满足以上两个条件时,才是简单请求,否则为非简单请求

解决方法
由上面定义可以看出,把你的post提交改成get提交,就不会两次请求,或者将post的header改成application/x-www-form-urlencoded, multipart/form-data 或 text/plain中的一种

在这里插入图片描述

 axios设置header信息

 this.axios({
        method: "POST",
        url: `${API_HOST}/api/bind/index`,
        data: obj,
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        }
    }).then(function(res) {
        console.log(res);
    });

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值