javascript - SwaggerUI 在向 API 发出请求时生成一个端口号。有什么办法可以阻止这种行为吗?

标签 javascript swagger-ui cloud-foundry

我在 Pivotal Cloud foundry 上托管了一个 Web API;其中包括它的 Swagger 文档。

但是,每当我尝试测试任何 API 端点时,Swagger 都会在请求 URL 中的主机后面放置一个端口号 :port,这会阻止与 API 端点建立连接,并且因此没有数据返回。出于某种原因,托管在 pivotal 上的 API 对端口号不满意;而只是路由 url 似乎工作正常。

我正在托管一个 ASP.NET Web API 并使用 Swashbuckle Swagger Nuget 包来生成文档。

有什么办法可以强制Swagger在发送api请求时去掉端口号吗?

最佳答案

也许这会有所帮助。 mknopf 的答案是正确的。由于声誉点的限制,我无法投票。但是,我在这里起草我的代码,供其他人在遇到此问题时快速解决。

在 SwaggerConfig.cs 文件中(仅当您从源文件而不是配置文件本身设置配置时)更新 RoolUrl 语句,如下所示:

c.RootUrl(req => ComputeHostAsSeenByOriginalClient(req));

然后在您的 swaggerconfig.cs 文件中添加以下方法:

private static string ComputeHostAsSeenByOriginalClient(HttpRequestMessage req)
{
   var authority = req.Headers.Host;
   var scheme = req.RequestUri.Scheme;
   if (req.Headers.Contains("X-Forwarded-Host"))
   {
       var xForwardedHost = req.Headers.GetValues("X-Forwarded-Host").First();
       var firstForwardedHost = xForwardedHost.Split(',')[0];
       authority = firstForwardedHost;
   }
   if (req.Headers.Contains("X-Forwarded-Proto"))
   {
       var xForwardedProto = req.Headers.GetValues("X-Forwarded-Proto").First();
       if (xForwardedProto.IndexOf(",") != -1)
       {
          //when multiple apache, X-Forwarded-Proto is also multiple ...
          xForwardedProto = xForwardedProto.Split(',')[0];
       }
       scheme = xForwardedProto;
   }
   return scheme + "://" + authority;
}

如果根 url 仍然有问题,我建议通过记录值来调试 req.Headers 并查看哪个 header 成员用于“authority”变量。

关于javascript - SwaggerUI 在向 API 发出请求时生成一个端口号。有什么办法可以阻止这种行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45707849/

相关文章:

microservices - 将微服务部署到 Pivotal Cloud Foundry 并在微服务之间建立通信

java - 从 Cloud Foundry 下载已部署的 War

c - 在 PCF-DEV 中将 native C/C++ 二进制文件部署为独立微服务

php - 如何在同一页面的标签页内跳转

javascript - bootbox 确认 - 选择“确定”时包括 href

swagger-ui - Swagger UI 中的掩码输入(示例 - 密码)?

java - 根据角色禁用 swagger-ui

javascript - cytoscape.js中为不同的节点设置不同的形状

javascript - Rails 5 在 .erb 文件中崩溃,但仅在服务器上运行时发生

swagger-ui - 用于 Rails API 应用程序的 Swagger 文档工具