Fetch API 产生“TypeError: failed to fetch"

2022-01-20 00:00:00 google-chrome fetch javascript

我在 Chrome 上,看到这个奇怪的错误:

I am on Chrome, and I see this bizarre error:

TypeError: failed to fetch

(是的,这就是整个错误消息).

这是产生错误的代码:

fetch(logoUrl, {
    method: 'put',
    headers: {
      'Content-Type': 'image/jpeg',
      //encode credentials as base64
      'Authorization': 'Basic ' + btoa('cdt-deployer:xyz'),
    },
    body: imgFile // the file

  }).catch(function(err){
       // the error appears here
  })

我该怎么办?我不知道出了什么问题.我只是想将二进制图像文件发送到另一台服务器(我看不到服务器日志).

what am I supposed to do? I have no idea what's wrong. I am simply trying to send a binary image file to another server (I cannot see the server logs).

推荐答案

来自 获取 API 文档:

当遇到网络错误时,fetch() 承诺会以 TypeError 拒绝,尽管这通常意味着权限问题或类似问题.

A fetch() promise rejects with a TypeError when a network error is encountered, although this usually means a permissions issue or similar.

其中一个可能是网络错误"的可能原因:

One of these may be possible causes of "network error":

  • DNS 问题
  • logoUrl 处的服务器不可用/错误
  • 错误的 HTTP 标头导致服务器忽略请求
  • 浏览器中止 - 很可能是由于在获取完成之前导航到另一个页面
  • DNS problems
  • the server at logoUrl is unavailable / erroneous
  • Erroneous HTTP Headers causing server to ignore the request
  • Browser aborted -- most likely due to navigation to another page before the fetch completes

相关文章