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)
任何人都可以帮助解决这个问题吗?
经过进一步调查,我发现,当我看着这些请求被通过浏览器上的开发工具发送到服务器,该URL正在从改变http到https通过招摇的端点的请求。
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 内容
| 归档时间: |
|
| 查看次数: |
2209 次 |
| 最近记录: |