我正在尝试在发布请求期间设置响应标头。虽然一切都正常编译,但未设置标题。
这是我的代码:
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
}
设置此类标头的有效方法是什么?
谢谢!
答案 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)
}