WebApi Swagger (Swashbuckle) - 通过代理连接时无法访问 Swagger UI

WebApi Swagger (Swashbuckle) - can't access Swagger UI when connecting through proxy

我在我的一个 API 控制器上启用了 swagger (Swashbuckle)。

服务器位于 http://192.168.7.119:1001 and Swagger UI is accessed through http://192.168.7.119:1001/swagger

在本地连接时,一切正常,我可以按预期在端口 1001 上访问 Swagger UI。 但是当尝试通过端口 1000 上的代理连接时(将 1000 重定向到 1001),我得到一个众所周知的错误:

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

我读过这个:

Unable to access swagger despite cors enabled Asp.NET WebAPI

并尝试在启动文件中手动设置 RootUrl,在 Swagger 中,如下所示:

.EnableSwagger(c => 
         {
             c.RootUrl(req => @"http://192.168.7.119:1001";
             ...
         });

CORS 设置设置为:

appBuilder.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);

任何提示我在这里做错了什么?

将 Swashbuckle 的 github 回购中的这两页放在一起,最简单的方法就是:

  • From Github Make sure that your proxy is sending the X-Forwarded-* headers (Apache does it out of the box while Nginx doesn't seems so. You have to do some changes on the nginx conf.
  • From Github。使用 ComputeHostAsSeenByOriginalClient 方法创建此 HttpRequestMessageExtensions 静态 class,然后
.EnableSwagger(c => 
         {
               c.RootUrl(req => req.ComputeHostAsSeenByOriginalClient());
             ...
         });