You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在@grpc/grpc-js服务处理器中获取HTTP/2请求头?

在@grpc/grpc-js服务中获取HTTP/2请求头的方法

当然可以获取,@grpc/grpc-js 里的请求上下文对象 call 包含了请求的元数据(Metadata),而HTTP/2的请求头会被封装在这个Metadata对象中——因为gRPC本身就是基于HTTP/2实现的,HTTP/2的标准头和伪头都会映射为Metadata的键值对。

你可以直接通过call.metadata获取到这些信息,具体用法看下面的代码示例:

server = new grpc.Server()
server.addService(proto.GrpcTester.service, {
    myMethod(call, callback) {
        // 获取完整的请求元数据对象
        const requestMetadata = call.metadata;
        
        // 转为键值对对象,查看所有HTTP/2相关头信息
        const allHeaders = requestMetadata.getMap();
        console.log('HTTP/2请求头集合:', allHeaders);
        
        // 获取单个HTTP/2伪头,比如:method、:path、:authority
        const httpMethod = requestMetadata.get(':method')[0];
        const httpPath = requestMetadata.get(':path')[0];
        console.log('HTTP/2请求方法:', httpMethod);
        console.log('HTTP/2请求路径:', httpPath);

        callback(null, {hello:"world"})
    }
})

需要注意的是,HTTP/2的伪头(比如以冒号开头的:method)在Metadata中会直接保留原键名,调用get(key)方法返回的是数组类型(因为HTTP头允许重复键),所以取第一个元素即可得到对应值。

内容的提问来源于stack exchange,提问作者Alana Storm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 20:55:20