0

我正在使用 Swashbuckler 版本。5.6.0 在 webapi 项目配置中说: c.Schemes(new[] { "https" });

尽管如此,当我访问我网站的 swagger 文档页面时,它会尝试加载:http://{swagger-docs-url}/swagger/v1,而不是 https,并且由于混合内容而失败

我在这里做错了什么?能

4

2 回答 2

0

实际上,Swashbuckle 会检测主机上的 Uri 并使用 Uri Scheme / 端口作为您 {swagger-docs-url}的 .

//SwaggerConfig.cs
config.EnableSwagger(c =>
{
    c.RootUrl(ResolveBasePath);
    c.Schemes(new[] { "http", "https" });
}

internal static string ResolveBasePath(HttpRequestMessage message)
{
    //fix for Cloudflare Flexible SSL and localhost test
    var scheme = message.RequestUri.Host.IndexOf("localhost") > -1 ? "http://" : "https://";
    return scheme + message.RequestUri.Authority;
}

我有一个使用 Cloudflare Flexible SSL 的站点,服务器在 HTTP 上运行,但到 Cloudflare 的入站连接是 HTTPS,所以我需要将 Uri 方案强制为 HTTPS,除非我在本地主机上进行测试。

于 2018-11-21T07:42:18.763 回答
0

配置中的c.Schemes(new[] { "https" });仅影响生成的招摇:

这将强制以下输出:

 {
   "swagger": "2.0",
   "info": {
     "version": "V1",
     "title": "Swagger_Test",
   },
   "host": "yourhost.azurewebsites.net",
   "schemes": [
     "https"
   ],

您的问题不完整,但我相信您正在寻找的是 rootUrl:https ://github.com/domaindrivendev/Swashbuckle#rooturl

于 2018-07-05T13:19:46.563 回答