Akka Http 关闭 header 解析

Akka Http turn off header parsing

我正在尝试使用 Akka-Http & Akka-Stream 实现透明代理。

但是,我 运行 遇到了 Akka-Http 操纵和解析来自上游服务器的响应 header 的问题。

例如,当上游服务器发送如下header:

Expires: "0"

Akka 会将其解析为 Expires Header 并将值更正为:

Expires: "Wed, 01 Jan 1800 00:00:00 GMT"

尽管 unix 时间的开始比 "0" 好,但我不希望此代理触及任何 header。我希望代理是透明的,而不是 "fix" 任何 header 通过。

这是简单的代理:

Http().bind("localhost", 9000).to(Sink.foreach { connection => logger.info("Accepted new connection from " + connection.remoteAddress) connection handleWith pipeline }).run()

代理流程:

Flow[HttpRequest].map(x => (x, UUID.randomUUID().toString()).via(Http().superPool[String]()).map(x => x._1)

我注意到 http-server 配置允许我配置并保留原始请求 headers,但似乎没有 http-client.

raw-request-uri-header = off

有什么方法可以配置 Akka 以在我响应客户端时保留 header 值?

目前无法做到这一点。

我想知道公开这种模式会有多困难,以及我们必须为此付出多少复杂性,但是我错误地认为这个功能无法发挥作用。

欢迎在 http://github.com/akka/akka 上为其开票,我们可以进一步讨论。一些 headers 被特殊对待,所以我们确实想将它们解析为正确的模型——想象一下 websocket 升级、连接 headers 等,所以这个功能请求背后必须有一个强有力的案例才能实现在我看来尽其所能。

(我目前正在维护Akka HTTP)。