【问题标题】:Swagger UI - TypeError: Failed to fetch - on endpoint request (ASPNET Core API)Swagger UI - TypeError: Failed to fetch - on endpoint request (ASPNET Core API)
【发布时间】:2026-01-23 20:50:01
【问题描述】:

尝试通过 swagger UI 运行请求时,我在 Swagger 上收到以下响应

TypeError: Failed to fetch

四处搜索后,我发现此错误的一个可能原因是由于 CORS 问题,其中请求中的来源已更改(您可以在其他帖子 here 中看到)。但是,就我而言,这不是通过其他代理运行的,它托管在本地托管的服务器上,并且该服务器不会更改任何标头。当我试图让 API 只接受任何 CORS 标头来测试这是否是问题时,我意识到了这一点;遗憾的是它不是,问题仍然存在。

API 在本地托管的服务器上托管的 IIS 上运行。 API 在默认网站上作为应用程序运行,可通过以下 url 访问:

http://servername/application-name/swagger/index.html

谁能帮忙解决这个问题?

【问题讨论】:

  • 检查您的操作。这个问题已经发生在我身上了。其中一项操作不是 [HttpPost](或 get、put ......)
  • @HamedHajiloo 操作是正确的,我认为发生了一些奇怪的事情,因为我认为它正在对我们请求的 POST 运行 GET,但事实证明它是 HTTPS在我们的案例中导致问题的重定向

标签: asp.net .net asp.net-core .net-core swagger


【解决方案1】:

经过进一步调查,我发现当我通过浏览器上的开发工具查看正在发送到服务器的请求时,URL正在通过端点的请求从http更改为https大摇大摆。

HTTPS,尚未在服务器上设置并返回 404(如开发工具中所见)。

事实证明,即使服务器尚未设置为通过 HTTPS 提供内容,请求仍会重定向到 HTTPS,这就是原因

app.UseHttpsRedirection();

因此,即使 swagger 能够在 HTTP 上加载,但当向 API 发出请求时,API 以 307 响应 - 用于重定向,请求被重定向到 HTTPS - 反过来又返回 404。这个 404响应是TypeError: Failed to fetch

的原因

建议的解决方法是关闭 https 重定向(仅用于测试目的),另一个是使服务器能够通过 HTTPS 正确提供内容,以便在进行调用时不会重定向,但而是直接发送到 HTTPS 上的正确 API 地址 - 这不应该正确返回数据,因为服务器可以提供 HTTPS 内容

【讨论】: