2 回答
TA贡献1797条经验 获得超6个赞
在 Java 中,您可以通过查看 ServerCall 的元数据来访问所有标头。元数据和标题是一回事。通常,StreamObservers 不会向您公开它,因为大多数用户不关心标头。
在您的情况下,您可以使用 aServerInterceptor
访问元数据。公开这一点的正确方法是从元数据中提取正确的标头并将其放入Context
. 上下文的范围是 ServerCall,可以在拦截器之外访问。在您的服务器处理程序中,您可以调用Context.current()
并获取Context.Key
您用于将标头放入上下文中的值。
TA贡献1796条经验 获得超10个赞
配置“grpc_set_header X-Real-IP $remote_addr;” 用于 grpc 的 nginx:grpc_set_header
server {
listen 9099 http2;
access_log /var/log/nginx/access-grpc.log;
location / {
grpc_pass grpc://127.0.0.1:9091;
grpc_set_header X-Real-IP $remote_addr;
}
}
从 gRPC 服务器端的上下文中获取元数据
我的 golang 代码:
md, ok := metadata.FromIncomingContext(ctx)
...
md.Get("x-real-ip")
...
添加回答
举报