如何在飞镖架-rpc 服务器中获取客户端 IP



我有一个用Shelf and Rpc apis编写的dart Web服务应用程序。

我需要在我的 api 方法中检查客户端 Ip,但我不知道如何。

上下文方法不包含 HttpRequest .contentInfo 属性。

此外,货架请求对象也不包含它,因此中间件函数也毫无用处。

有人对如何解决这个问题有想法吗?

您可以使用货架的中间件概念来执行此操作。 您可以在此处查看记录器中间件示例:https://www.crossdart.info/p/shelf/0.6.5+2/src/handlers/logger.dart.html。 可以在此处找到使用记录器的示例:https://github.com/dart-lang/shelf

在中间件中,您可以在请求对象(扩展消息)中找到 IP 地址。 消息允许您访问包含 IP 地址的原始 http 标头。 从那里你可以决定如何处理无效的ip(抛出错误,返回一个带有错误的请求,等等)。