簡體   English   中英

如何使用grpc-java從請求元數據中獲取客戶端ip

[英]How to get client ip from request metadata with grpc-java

我使用grpc-java並通過ServerInterceptor獲取元數據,但我得到以下信息沒有客戶端IP地址,權限是服務器IP,我怎么能得到客戶端IP?謝謝。

元數據({:scheme = [http],:method = [POST],:path = [/ test / test1],:authority = [192.168.199.9:50051],grpc-encoding = [identity],grpc-accept- encoding = [identity,deflate,gzip],te = [trailers],content-type = [application / grpc],user-agent = [grpc-objc / 0.13.0 grpc-c / 0.13.0(ios)]} )

元數據中未提供客戶端IP。 但是您可以調用ServerCall.attributes()並獲取Grpc.TRANSPORT_ATTR_REMOTE_ADDR

請注意,API不穩定,可能會發生變化。

在最新的(1.2.0)gRPC中使用攔截器中的io.grpc.Grpc.TRANSPORT_ATTR_REMOTE_ADDR屬性來獲取遠程地址。

如果在python grpc中,您將使用context.peer()獲取客戶端IP地址和端口。

def your_method(self, request, context):
    ...
    context.peer() # return 'ipv4:49.123.106.100:44420'
    ...

客戶端IP作為gRPC屬性公開(TRANSPORT_ATTR_REMOTE_ADDR),訪問它的示例在這里

 String inetSocketString = serverCallCapture.get().getAttributes()
    .get(Grpc.TRANSPORT_ATTR_REMOTE_ADDR).toString();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM