【问题标题】:How to get the client IP in a dart shelf-rpc server如何在飞镖架-RPC服务器中获取客户端IP
【发布时间】:2016-04-26 11:43:54
【问题描述】:

我有一个使用 Shelf 和 Rpc api 编写的 dart Web 服务应用程序。

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

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

另外,货架Request对象也不包含它,所以中间件功能也没有用。

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

【问题讨论】:

  • 只是一个关于上下文的问题。你想用客户端的 IP 地址做什么?因为有时通过 IP 地址来识别客户端并不是一个好主意。
  • 我正在编写一个服务器应用程序,我只想接受来自授权 IP 的用户请求。

标签: dart httprequest clientip dart-shelf dart-rpc


【解决方案1】:

您可以通过使用货架的中间件概念来做到这一点。您可以在此处查看示例记录器中间件: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(抛出一个错误,返回一个错误的请求,等等)。

【讨论】:

  • 也许只是因为我使用的是cURL,但是当我查看创建的Request对象中的标头时,我看不到任何对源IP的引用。其实我只有User-Agent、Accept和Host。你能指出我在哪里可以获得请求者的 IP 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-13
  • 2017-12-11
  • 2010-11-16
  • 2015-05-21
  • 2019-01-16
  • 2019-09-23
  • 1970-01-01
相关资源
最近更新 更多