首页 > 解决方案 > 为什么我的 fetch 请求被调用了两次?

问题描述

API = {
    get_processed_autodesk_results : function(){
            fetch('/api/results', {
                method: 'get',
                headers: {
                    'Accept': 'application/json, text/plain, */*',
                    'Content-Type': 'application/json'
                }
            }).then(res=>res.json())
            .then(function(res) {
                console.log(res);   

            });
    }
} 

setInterval(API.get_processed_autodesk_results,5000);

那是我的代码。我检查了控制台,发现 fetch 请求每 5 秒执行两次。我无法弄清楚为什么会这样。任何人都可以帮忙吗?提前致谢

标签: javascript

解决方案


您看到的附加提取请求是在OPTIONS请求中传递标头时发生的请求(飞行前请求)。

摘自 MDN

与“简单请求”(上面讨论过)不同,“预检”请求首先通过 OPTIONS 方法向另一个域上的资源发送 HTTP 请求,以确定实际请求是否可以安全发送。跨站点请求是这样预检的,因为它们可能对用户数据有影响。

您可以测试带有和不带有标头的请求,并通过在此处检查开发人员工具来查看会发生什么:

https://jsfiddle.net/219n4a0b/


推荐阅读