我公开了一个接收两个查询参数的简单端点。当我在本地测试代码时,我没有任何问题。但是当部署到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()
}
任何建议都将不胜感激!
答案 0 :(得分:4)
您收到了非法请求标头异常,因此无论调用您的端点(发出请求),都会向您传递非法的Cookie
标头值。它与此请求处理代码无关。简单地说,“这不是你,而是他们”。
只要请求本身有效(除了这个错误的标题),那么处理应该继续(它是非终端的)。您可以尝试找出正在调用您的内容并修复它以消除该警告消息。如果他们给你一个cookie,他们可能希望你能够正确地接收它并使用它。如果这不是一个选项,您可以将以下配置设置添加到您的actor系统:
akka.http.server.parsing.illegal-header-warnings = on
如果您无法解决潜在问题,那将为您提供警告。