Scalatra设置响应标头

时间:2015-10-14 18:25:15

标签: scala post header scalatra

我正在尝试在发布请求期间设置响应标头。虽然一切都正常编译,但未设置标题。

这是我的代码:

post("/get_value"){
val jsonString = request.body;   

    response.setHeader("Access-Control-Allow-Origin", "*")
    response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE")
    response.setHeader("Access-Control-Max-Age", "3600")
    response.setHeader("Access-Control-Allow-Headers", "x-requested-with, content-type")

jsonString
}

设置此类标头的有效方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

我不熟悉Scalatra,但您可以注意到ActionResult是一个案例类;

case class ActionResult(status: ResponseStatus, body: Any, headers: Map[String, String])

此案例类的第3个参数是Map[String,String],它应该是响应头。

还有;

object Ok {
  def apply(body: Any = Unit, headers: Map[String, String] = Map.empty, reason: String = "") = ActionResult(responseStatus(200, reason), body, headers)
}

返回状态代码为200的http响应,您可以创建它;

Ok("response",Map('HeaderKey' -> 'HeaderValue'))

作为结论,最终解决方案可以像;

post("/get_value") {
  val jsonString = request.body;   
  val headers = Map("Access-Control-Allow-Origin" -> "*",
                    "Access-Control-Allow-Methods" -> "POST, GET, OPTIONS, DELETE",
                    "Access-Control-Max-Age" -> "3600",
                    "Access-Control-Allow-Headers" -> "x-requested-with, content-type")

  Ok(jsonString,headers)
}