gpt4 book ai didi

scala - Scala Play 2.2 应用程序中的 CORS 过滤器

转载 作者:行者123 更新时间:2023-12-02 15:48:36 25 4
gpt4 key购买 nike

我想在我的 Play 2.2.x 应用程序中实现 CORS 过滤器。到目前为止,我有以下内容:

package filters

import play.api.mvc._
import play.api.libs.concurrent.Execution.Implicits.defaultContext
import play.api.GlobalSettings

class CorsFilter extends EssentialFilter {
def apply(next: EssentialAction) = new EssentialAction {
def apply(requestHeader: RequestHeader) = {
next(requestHeader).map { result =>
result.withHeaders("Access-Control-Allow-Origin" -> "*",
"Access-Control-Expose-Headers" -> "WWW-Authenticate, Server-Authorization",
"Access-Control-Allow-Methods" -> "POST, GET, OPTIONS, PUT, DELETE",
"Access-Control-Allow-Headers" -> "x-requested-with,content-type,Cache-Control,Pragma,Date")
}
}
}
}

object Global extends WithFilters(new CorsFilter) with GlobalSettings

以及预检选项操作:

  def preflight(all: String) = Action {
Ok("").withHeaders("Access-Control-Allow-Origin" -> "*",
"Allow" -> "*",
"Access-Control-Allow-Methods" -> "POST, GET, PUT, DELETE, OPTIONS",
"Access-Control-Allow-Headers" -> "Origin, X-Requested-With, Content-Type, Accept, Referrer, User-Agent");
}

定义了路线:

OPTIONS        /*all                                controllers.Application.preflight(all: String)

似乎发生的情况是 CorsFilter 代码没有被执行。我打开了调试器,但没有看到任何请求命中此过滤器。为什么会这样呢?我是否需要在其他地方定义过滤器内容以便 Play 可以看到它?

最佳答案

GlobalSettings 对象需要位于默认包中,因此包过滤器会导致 Play 忽略它。我建议将其移动到它自己的文件 Global.scala 中。

关于scala - Scala Play 2.2 应用程序中的 CORS 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24269387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com