Akka-http非法请求标头

时间:2016-04-25 11:44:29

标签: scala akka-http

我公开了一个接收两个查询参数的简单端点。当我在本地测试代码时,我没有任何问题。但是当部署到prod时,我看到以下消息:

a.a.ActorSystemImpl Illegal request header: Illegal 'cookie' header: Invalid input '/', expected tchar, '\r', WSP or '=' (line 1, column 186): ...

正如您所看到的,我没有进行任何cookie解析

import akka.actor.{ActorSystem, Props}
import akka.http.scaladsl.Http
import akka.http.scaladsl.server.Directives._
import akka.stream.ActorMaterializer
import akka.stream.scaladsl.Sink

object MainApp extends App {
  implicit val system = ActorSystem()
  implicit val materializer = ActorMaterializer()

  private val config = system.settings.config

  private val server = Http().bind(config.getString("akka.http.server.interface"), config.getInt("akka.http.server.port"))

  private val route = {
    path("replay") {
      get {
        parameters("fromDate", "toDate") { (fromDate, toDate) =>
          complete {
            <some other code>
          }
        }
      }
    }
  }

  val bindingFuture = server.to(Sink.foreach {
    connection =>
      connection handleWith route
  }).run()
}

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:4)

您收到了非法请求标头异常,因此无论调用您的端点(发出请求),都会向您传递非法的Cookie标头值。它与此请求处理代码无关。简单地说,“这不是你,而是他们”。

只要请求本身有效(除了这个错误的标题),那么处理应该继续(它是非终端的)。您可以尝试找出正在调用您的内容并修复它以消除该警告消息。如果他们给你一个cookie,他们可能希望你能够正确地接收它并使用它。如果这不是一个选项,您可以将以下配置设置添加到您的actor系统:

akka.http.server.parsing.illegal-header-warnings = on

如果您无法解决潜在问题,那将为您提供警告。