当尝试通过swagger UI运行请求时,我在Swagger上收到以下响应
TypeError: Failed to fetch
经过四处搜寻,我发现此错误的可能原因是由于CORS问题,请求中的原点已更改(您可以在另一篇文章here中看到)。但是,就我而言,它没有通过其他代理运行,而是托管在本地托管的服务器上,并且该服务器没有更改任何标头。当我尝试允许API仅接受任何CORS标头以测试这是否是问题时,我意识到了这一点。遗憾的是事实并非如此,问题仍然存在。
API在本地托管的服务器上托管的IIS上运行。该API在默认网站上作为应用程序运行,可通过以下网址进行访问:
http://servername/application-name/swagger/index.html
有人可以帮助解决这个问题吗?
答案 0 :(得分:2)
经过进一步调查,我发现当我查看通过浏览器上的开发工具发送到服务器的请求时,该请求的URL已从http
更改为https
摇摇欲坠地终结端点。
尚未在服务器上设置HTTPS并返回404(如开发工具中所示)。
事实证明,即使尚未将服务器设置为通过HTTPS提供内容,请求仍然重定向到HTTPS,这就是原因
app.UseHttpsRedirection();
因此,即使可以在HTTP上加载大张旗鼓,但当向API发出请求时,API也会响应307-进行重定向,并将请求重定向到HTTPS-依次返回404。此404回应是TypeError: Failed to fetch
为此,建议的解决方法是关闭https重定向(仅用于测试目的),另一个是使服务器能够通过HTTPS正确提供内容,以便在进行调用时不会被重定向,但是而是直接发送到HTTPS上的正确API地址-不应正确返回数据,因为服务器可以提供HTTPS内容