【问题标题】:Is there a way to determine protocol that was attempted to connect to your "HTTP server"?有没有办法确定尝试连接到“HTTP 服务器”的协议?
【发布时间】:2021-02-22 08:12:09
【问题描述】:

我有以下情况:我的客户只知道,他们有一个设备,您可以在其中列出 HTTP 地址(或至少看起来像 HTTP 地址的地址),当他们“按一个按钮”(基本上他们有一种基于物理操作触发流程的方法)。

我已经建立了一个gunicorn 服务器来监听他们的请求,但我只得到[WARNING] Invalid HTTP request received。这并不能说明什么,但是经过一些研究后,似乎在使用错误的协议时经常会出现此警告。此外,通过使用curl,无论我如何尝试使请求格式错误,我都无法重现该问题。

我想在服务器前面添加一些东西,以便能够检测收到的请求是否是 HTTP 2.0、1.1、1.0、UDP、WebSocket... 等等;我只想知道他们寄给我什么。我对 HTTP 版本特别感兴趣(尽管 1.0 和 1.1 的 curl 对我来说并没有失败)和 UDP,因为它们最有可能解决这个问题。

有什么好的工具可以解决这个问题吗?

【问题讨论】:

    标签: debugging gunicorn iot network-protocols


    【解决方案1】:

    根据您的问题,我在不同的场景中想到了这些可能的解决方案。

    您可以在gunicorn 中记录您的请求并在需要时查看它们,here 是一种方式。

    当您记录了您的请求后,您可以查看它们以及响应。通过这种方式,您可以找出格式错误的请求,并在发送请求的设备中进行更正。

    而且,如果您想监控 LAN 上的请求,您可以添加 TCP 嗅探器,或使用 Wireshark。注意:它只会记录 HTTP 请求,因为默认情况下 SSL 不适用,您可能需要对其进行配置。

    如果没有任何效果,您可以创建一个示例服务器进行测试,记录您收到的针对特定路径的完整 HTTP 请求和响应数据包,然后按照您想要的方式对其进行编辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-02
      • 2021-10-24
      • 1970-01-01
      • 2012-02-15
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      相关资源
      最近更新 更多