微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为 grpc-web 调用设置标头

如何解决为 grpc-web 调用设置标头

我目前面临 grpc-web 和负载均衡器的问题。 尝试从我们的网关 API 调用我们的 grpc 网络服务,导致以下错误

Status(StatusCode="UnkNown",Detail="Bad gRPC response. HTTP status code: 411")

似乎需要以下任一标头,内容长度或传输编码。

我有一种在客户端中设置元数据的方法

private async Task<Metadata> SetMetadata()
    {
        //More stuff here
        
        headers.Add("transfer-encoding","chunked");

        return headers;
    }

这是我创建客户端的方法

private async Task<Services.Protobuf.ServiceClient> CreateClient()
    {

        var httpMessageHandler = new httpclienthandler();

        _grpcChannel ??= GrpcChannel.ForAddress(
            await _serviceAddressprovider.GetServiceAddress<ServiceClient>() ??
            throw new InvalidOperationException(),new GrpcChannelOptions()
            {
                HttpHandler = new GrpcWebHandler(httpMessageHandler)
            });
        return new(_grpcChannel);
    }

这是我如何使用这两个

 var serviceClient = await CreateClient();
 var request = new Request
 {
     //Request stuff
 };
 var getListReply = await serviceClient.GetListReplyAsync(request,await SetMetadata());

现在。问题是我无法设置 transfer-encoding 或 Content-Lenght 标头。他们只是在某处被剥夺了衣服。 如果提琴手正在运行,它们会被添加(我假设是提琴手),并且请求实际上有效。但是如果 fiddler 没有运行,标题就不存在,我会收到上述错误。 (老实说,我不明白 fiddler 的部分,我只是报告我所看到的)。

有人知道为什么会这样吗?如果甚至可以添加我正在尝试使用 grpc-web 添加标题

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。