如何使用grpc-java从请求元数据获取客户端ip

Way*_*yne 3 java grpc

我使用grpc-java并通过ServerInterceptor获取元数据,但是我在没有客户端IP地址的情况下获取了以下信息,权限是服务器ip,如何获得客户端ip?

元数据({:scheme = [http] 、: method = [POST] 、: path = [/ test / test1] 、: authority = [192.168.199.9:50051],grpc-encoding = [identity],grpc-accept-编码= [身份,放气,gzip],te = [预告片],内容类型= [应用程序/ grpc],用户代理= [grpc-objc / 0.13.0 grpc-c / 0.13.0(ios)]} )

Eri*_* Mo 7

如果在 python grpc 中,您将使用 获取客户端 IP 地址和端口context.peer()

def your_method(self, request, context):
    ...
    context.peer() # return 'ipv4:49.123.106.100:44420'
    ...
Run Code Online (Sandbox Code Playgroud)


Eri*_*son 5

在元数据中未提供客户端IP。但是您可以调用ServerCall.attributes()并获取Grpc.TRANSPORT_ATTR_REMOTE_ADDR

请注意,API不稳定并且可能会更改。


odi*_*apc 5

在最新的(1.2.0)gRPC中,使用io.grpc.Grpc.TRANSPORT_ATTR_REMOTE_ADDR拦截器中的属性来获取远程地址。