axios 在 20 秒内给出响应,但具有相同请求负载的相同 api 在 6 秒内从邮递员给出响应

IT技术 javascript reactjs axios fetch-api
2022-08-03 01:06:05

我正在使用 axios 进行来自 reactjs 框架的 api 调用。通过 axios,我在 20 秒内得到响应,但是当我从邮递员发出相同的请求时,它会在 6 秒内给出响应。

我使用 fetch 尝试了相同的请求,它也需要大约 20 秒

     axios.post(URL, reqObject, {
            headers: {
                'Access-Control-Allow-Origin': '*',
                'Authorization': 'Bearer '.concat(AccessToken)
            },
        }
        ).then(function (response) {

            console.log(" axios  APi call response ", response.data.value)

        }).catch(function (error) {
            console.log("  error error");
            console.log(error);
        });

1个回答

听起来这是对响应缓慢的服务器的跨域请求。跨域 POST 需要在浏览器上进行称为“预检”的 OPTIONS 请求。如果服务器响应缓慢,可能需要很长时间才能响应 OPTIONS 请求,然后又需要很长时间才能响应 POST。

相比之下,由于 postman 不是浏览器,它不必担心 CORS,并且可以在不发送 preflight OPTIONS 的情况下发送 POST,因此只会产生 POST 的成本。

(如果您想知道为什么邮递员不必进行预检,但浏览器却需要,我建议阅读Same Origin PolicyMDN 上的 CORS以及我在评论中链接的问题的答案。)