开发者问题收集

为什么我的获取请求被调用两次?

2018-04-25
17111
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);

这是我的代码。我检查控制台,发现获取请求每 5 秒执行两次。我不明白为什么会发生这种情况。有人能帮忙吗?提前致谢

2个回答

您看到的额外获取请求是 OPTIONS 请求(预检请求),当请求中传递标头时会发生该请求。

摘自 MDN

Unlike “simple requests” (discussed above), "preflighted" requests first send an HTTP request by the OPTIONS method to the resource on the other domain, in order to determine whether the actual request is safe to send. Cross-site requests are preflighted like this since they may have implications to user data.

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

https://jsfiddle.net/219n4a0b/

Mathias W
2018-04-25

我也遇到了类似的问题,但事实证明这是因为我的路由经过了服务工作者,它再次请求并返回了请求,因此服务器收到了 2 个请求,1 个来自主获取,另一个来自服务工作者获取。
编辑 facepalm 是的,我是 pwas 的新手,所以使用 return 而不是 respondWith()

Officialk
2020-03-18