我正在使用Play 2.2.1,我正在尝试编写自己的Action来处理CORS请求.我发现了 这个,但不幸的是它没有编译.
仅供参考,这是(稍加修改)的代码:
import play.api.mvc._ import scala.concurrent.ExecutionContext case class CorsAction(action: EssentialAction) extends EssentialAction { def apply(request: RequestHeader) = { implicit val executionContext: ExecutionContext = play.api.libs.concurrent.Execution.defaultContext val origin = request.headers.get("Origin").getOrElse("*") if (request.method == "OPTIONS") { val cors = Action { request => Ok("").withHeaders( "Access-Control-Allow-Origin" -> origin, "Access-Control-Allow-Methods" -> "GET, POST, PUT, DELETE, OPTIONS", "Access-Control-Allow-Headers" -> "Accept, Origin, Content-type, Authorization, X-Auth-Token, " + "X-HTTP-Method-Override, X-Json, X-Prototype-Version, X-Requested-With", "Access-Control-Allow-Credentials" -> "true", "Access-Control-Max-Age" -> (60 * 60 * 24 * 30).toString) } cors(request) } else { action(request).map(res => res.withHeaders( "Access-Control-Allow-Origin" -> origin, "Access-Control-Allow-Credentials" -> "true" )) } } }
错误是:
Cors.scala:13: not found: value Ok
我是Scala的新手,玩游戏更是如此!并且无法弄清楚发生了什么.据我所知,我必须使用EssentialAction而不仅仅是Action b/c我想要获得请求的标题.到目前为止,我发现的所有例子都只涉及Action.