首页 > 解决方案 > 在远程环境的 web api 中访问 swagger 时遇到问题?

问题描述

我已经为我的 Web API 2.2 应用程序配置了 Swagger,它在本地加载,但是当我尝试在远程服务器上访问它时出现 CORS 错误。此外,为了进入大摇大摆的页面,我必须非常明确地使用 url。例如:

https://example.com/swagger/ui/index

相对于:

example.com/swagger/

我想我在之前的项目中遇到了类似的问题,我必须提供第一个示例中显示的完整显式 url,但在之前的项目中,使用长格式 url 按预期显示了工作页面。这是由于https配置吗?是否有可以配置为允许在 https 环境中使用短 url 的特殊招摇设置?在远程服务器上显示以下错误消息,清楚地表明 CORS 错误:

“无法从服务器读取。它可能没有适当的访问控制源设置。”

我已经尝试了以下线程中的所有内容,但我仍然遇到问题:

使用 ASP.NET Web API 对 PUT 和 DELETE 的 CORS 支持

如果我向远程服务器提交 API 搜索请求,则会返回“Access-Control-Allow-Origin > *”的响应标头,因此似乎为远程服务器启用了 CORS。不知道为什么招摇会遇到似乎是 CORS 错误?

标签: .netasp.net-web-apicorsasp.net-web-api2swagger

解决方案


您需要在 SwaggerConfig 文件中指定完整的根 url。您可能会遇到这种情况,因为当您在本地运行时,API 是通过 HTTP 访问的,但在服务器上它将是 HTTPs,从而导致 CORS 问题,因为默认情况下您的 SwaggerCongif 仍将指向 HTTP 路径。


推荐阅读