【问题标题】:akka http remote addressakka http 远程地址
【发布时间】:2017-12-07 09:02:39
【问题描述】:

我正在使用 Akka HTTP 10.0.9,但努力让我的单元测试有一个有效的远程地址。

例如单元测试:

Get("/").withHeaders(
    RawHeader("Remote-Address", "192.168.1.1"), RawHeader("X-Forwarded-For", "192.168.1.1")
) ~> route ~> check {
    status must_== StatusCodes.OK
}

在网络服务器代码中:

extractClientIP{ clientAddr =>
  complete(s"$clientAddr")
}

通过命令行运行应用时,客户端地址正确返回。但是当通过单元测试运行时,客户端地址总是返回为“未知”

我做错了什么?

【问题讨论】:

    标签: scala unit-testing http akka


    【解决方案1】:

    这是由于 akka http 无法处理 test 中的RawHeader。您可以通过使用Remote-Address 对象来设置 IP 进行测试来解决它:

    import akka.http.scaladsl.model.headers.`Remote-Address`
    Get().withHeaders(
      `Remote-Address`(RemoteAddress(new InetSocketAddress("192.168.1.1", 23)))
    )
    

    【讨论】:

      猜你喜欢
      • 2013-12-10
      • 2012-09-04
      • 1970-01-01
      • 2020-07-27
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多