【问题标题】:ServiceStack global request redirectServiceStack 全局请求重定向
【发布时间】:2017-09-27 00:11:27
【问题描述】:

我正在尝试重定向以使用 /docs 而不是 /swagger-ui。我实现了处理程序(基本上从OpenApiFeature.cs 复制)来捕获/docs 路径和服务器/swagger-ui 内容,但它只适用于/docs/,而不适用于/docs。使用 /docs,所有 css 和 js 文件都会解析到根目录而不是 /docs 文件夹(host/blah.js 而不是 host/docs/blah.js):

appHost.CatchAllHandlers.Add((httpMethod, pathInfo, filePath) =>
{
    IVirtualFile indexFile = null;

    switch (pathInfo.ToLower())
    {
        case "/docs":
        case "/docs/":
        case "/docs/default.html":
            indexFile = appHost.VirtualFileSources.GetFile("/swagger-ui/index.html");
            break;
        default:
            indexFile = null;
            break;
    }

    if (indexFile != null)
    {
        var html = indexFile.ReadAllText();

        return new CustomResponseHandler((req, res) =>
        {
            res.ContentType = MimeTypes.Html;
            return html;
        });
    }
    return pathInfo.StartsWithIgnoreCase("/docs") ? new StaticFileHandler(pathInfo.ReplaceFirst("/docs", "/swagger-ui")) : null;
});

为了解决这个问题,我想我可以将 /docs 重定向到 /docs/:

        case "/docs":
        return new RedirectHttpHandler() {RelativeUrl = "/docs/"};

问题在于它还会以某种方式将连接从 https 降级为 http。由于这是一个相对重定向,我不确定那里发生了什么。有没有更好的方法来实现这一点?更糟糕的是,它适用于我的本地开发机器,但不适用于我们的测试环境。两者都运行独立的SS。显然有一些不同的设置,但我真的无法想象是什么原因造成的。

我可能错过了一些愚蠢的东西,但我就是找不到。是否有更新的设置可以使这更容易开箱即用?有什么想法吗?

【问题讨论】:

    标签: c# redirect servicestack swagger-ui


    【解决方案1】:

    ServiceStack 将根据传入的请求重写 url 以包含 httphttps,您可以通过设置 Config.UseHttpsLinks=true 强制使用 https 链接,添加重定向的最简单方法是添加它到Config.RedirectPaths,这看起来像:

    SetConfig(new HostConfig {
        UseHttpsLinks = true,
        RedirectPaths = {
            { "/docs", "/swagger-ui/" },
        }
    });
    

    注意:如果您使用的是终止 https SSL 连接的代理,最好将其配置为设置 X-Forwarded-Proto: https HTTP 请求标头,以便下游应用服务器可以确定原始请求是否通过 https 发送。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-25
      • 2015-06-24
      • 2014-05-19
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多