我使用github.com/grpc-ecosystem/go-grpc-middleware/util/metautils
包来提取标题,看到Link to AuthFromMD implementation我确信我可以覆盖AuthFromMD并拥有自己的标题名称而不是authorization
。但结果是var:=metautils.ExtractIncoming(ctx).Get(headerAuthorize)
此方法调用始终期望headerAuthorize
为authorization
。或者是抛出错误。我的用例是使用不同的HeaderNames,因此我可以使用此方法解析多个Header。有人可以帮助我吗
答案 0 :(得分:0)
你是正确的AuthFromMD
期望标题被命名为authorization
。这部分是因为它模仿HTTP header authorization
,它总是被命名为相同。
我不确定我是否理解您的用例,但您绝对可以在自己的包中重新实现AuthFromMD
并修改它以获取标题名称。
答案 1 :(得分:0)
问题是AuthFromMD在GRPC-Gateway中使用context.Context
。所以任何通过网关的grpc请求都会通过这个请求,并且上下文正在删除任何不在此包的上下文中定义的METADATA的头文件。
解决方案将覆盖此问题,并添加任何不从Context
中删除的自定义标头