Swagger UI - TypeError: Failed to fetch - on endpoint request (ASPNET Core API)

New*_*per 5 .net asp.net swagger .net-core asp.net-core

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

TypeError: Failed to fetch
Run Code Online (Sandbox Code Playgroud)

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

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

http://servername/application-name/swagger/index.html
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助解决这个问题吗?

New*_*per 9

经过进一步调查,我发现,当我看着这些请求被通过浏览器上的开发工具发送到服务器,该URL正在从改变httphttps通过招摇的端点的请求。

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

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

app.UseHttpsRedirection();
Run Code Online (Sandbox Code Playgroud)

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

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