javascript - 为什么我在实际工作时得到 "Fetch failed loading"?

标签 javascript google-chrome post fetch-api

我使用以下代码通过 Fetch API 将用户位置发布到我自己的后端服务:

window.onload = () => {
    let getPosition = (options) => {
        return new Promise((resolve, reject) => {
            navigator.geolocation.getCurrentPosition(resolve, reject, options);
        });
    };

    getPosition().then(pos => {
        const data = new FormData();
        data.append('latitude', String(pos.coords.latitude));
        data.append('longitude', String(pos.coords.longitude));

        fetch('/', {             // <--- error is thrown in this line
            method: 'POST',
            body: data
        }).then(response => {
            if (!response.ok) {
                throw Error('Data sent - Network response NOT OK');
            } else {
                console.log('Data sent - Network response OK')
            }
        });
    });
};

这完美地工作,后端服务发回一个肯定的空响应。 Data sent - Network response OK 记录在浏览器的控制台中,一切都很好,除了紧接着,这是记录:

enter image description here

为什么我会收到 Fetch failed loading: POST 即使 POST 成功,响应正常并且 Chrome 网络选项卡中的状态代码为 200 OK?我的代码有问题吗?

最佳答案

我的行为与您所看到的相同。 我的服务器使用 204(空响应)和空 (Content-Length=0) 响应响应 POST 请求。 我尝试将其更改为仅以“ok”消息响应(编辑:实际上现在只是返回创建的对象)并且 fetch 错误日志消失了。

在我看来,fetch(至少在 Chrome 中)在响应主体为空时错误地记录“Fetch Failed”,即使请求成功也是如此。

关于javascript - 为什么我在实际工作时得到 "Fetch failed loading"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57477805/

相关文章:

firefox - css3 不会在 w3c valdidator 中验证

javascript - 如何使用导航器而不是 window.webkitStorageInfo HTML5 文件系统 API?

google-chrome - 如何在 chrome/safari mobile IOS 6 上查看 javascript 错误

web-services - 授权 header 中不是有效的键=值对(缺少等号)

jquery - 如何正确发送带有文本和文件输入字段的表单数据?

JAVA发送包含XML字符串的Post请求

javascript - 从 JSON 读取返回未定义

javascript - 使用 angularjs 检测未保存的更改并提醒用户

javascript - Backbone Model 有条件地触发事件,View 听不到它

javascript - react Js : Pass props to React Router's Link component Error