【问题标题】:How to turn off HTTPS on gRPC server如何在 gRPC 服务器上关闭 HTTPS
【发布时间】:2019-12-27 09:25:24
【问题描述】:

如何在 gRPC 服务器上关闭 HTTPS?有什么办法吗?

【问题讨论】:

  • 您是在谈论 ASP.NET Core 3.0 中的 gRPC 吗?虽然 HTTP2(gRPC 使用)在技术上并不要求它,但所有浏览器都决定强制它 - 所以禁用它可能没有用。
  • 是的。谢谢。
  • 你找到禁用https的方法了吗?

标签: c# .net-core https grpc


【解决方案1】:

尽管这是一个老问题,但我最近不得不自己做这件事,这就是我是如何做到的,基于 Visual Studio 的 ASP.NET Core 模板:

首先,您必须配置 kestrel 网络服务器以使用 HTTP2 协议进行 HTTP(通常在 Program.cs 中):

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
          webBuilder.ConfigureKestrel(options =>
            options.ConfigureEndpointDefaults(defaults =>
              defaults.Protocols = HttpProtocols.Http2));
          webBuilder.UseStartup<Startup>();
        });

现在服务器应该能够处理所有调用,无论使用 HTTP 还是 HTTPS。

完成此操作后,您只需在首次调用 gRPC 服务器之前告诉客户端允许使用不带 HTTPS 的 HTTP2:

AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);
var client = new GrpcTest.GrpcTestClient(GrpcChannel.ForAddress("http://localhost:5000"));

来源:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    相关资源
    最近更新 更多