Scala Play 2.4 过滤器(日志记录、CORS)在 Heroku 上不起作用
Scala Play 2.4 Filters (Logging, CORS) not working on Heroku
我有一个在本地运行良好的 Scala Play (2.4) REST API。当我将它部署到 Heroku 时,我 运行 遇到了 CORS 问题,因为我从一个单独的 Web 应用程序调用它。
我根据文档添加 CORS 过滤器解决了这个问题,并且在本地 运行 时我没有收到 CORS 错误。但是当部署到 Heroku 时,我仍然得到标准的 CORS 错误。
为了隔离问题,我在我的应用程序中添加了一个简单的日志记录过滤器,它在本地再次运行良好。但是即使这个日志过滤器在 Heroku 上也不起作用。
这让我想到我的过滤器在部署到 Heroku 时可能没有被调用。
我不确定还有什么方法可以解决这个问题。任何帮助将不胜感激。
这看起来很奇怪,因为 Heroku 实际上只是 运行 宁
的输出
% sbt stage
如果您创建 stage
构建然后 运行 您在 Procfile
中拥有的任何内容(例如:
% target/universal/stage/bin/myappname -Dhttp.port=$PORT
?
工作设置:
我有几个 Play 2.4 应用程序 运行ning 在 Heroku 中,带有工作过滤器,这是我在 Play 2.4.6 应用程序前面的示例我现在:
在build.sbt
确保指定 filters
依赖项:
libraryDependencies ++= Seq(
ws,
cache,
filters,
...
)
在application.conf
配置 CORS 模块:
play.modules.enabled += "play.filters.cors.CORSModule"
play.filters.cors {
allowedOrigins = null, # This means "all"
allowedHttpMethods = null # This means "all"
exposedHeaders = ["Authorization", "Content-Length", "Content-Type", "Content-disposition"],
preflightMaxAge = 14 days
}
在Filters.scala
(位于 app
目录的根目录):
import javax.inject.Inject
import play.api.http.HttpFilters
import play.filters.cors.CORSFilter
class Filters @Inject() (corsFilter: CORSFilter) extends HttpFilters {
def filters = Seq(corsFilter)
}
如果你已经像那样配置了所有东西并且它仍然不工作,你确定你对 Heroku 的部署实际上已经完成了吗成功地?检查日志 ( % heroku logs --tail
)
我有一个在本地运行良好的 Scala Play (2.4) REST API。当我将它部署到 Heroku 时,我 运行 遇到了 CORS 问题,因为我从一个单独的 Web 应用程序调用它。
我根据文档添加 CORS 过滤器解决了这个问题,并且在本地 运行 时我没有收到 CORS 错误。但是当部署到 Heroku 时,我仍然得到标准的 CORS 错误。
为了隔离问题,我在我的应用程序中添加了一个简单的日志记录过滤器,它在本地再次运行良好。但是即使这个日志过滤器在 Heroku 上也不起作用。
这让我想到我的过滤器在部署到 Heroku 时可能没有被调用。
我不确定还有什么方法可以解决这个问题。任何帮助将不胜感激。
这看起来很奇怪,因为 Heroku 实际上只是 运行 宁
的输出% sbt stage
如果您创建 stage
构建然后 运行 您在 Procfile
中拥有的任何内容(例如:
% target/universal/stage/bin/myappname -Dhttp.port=$PORT
?
工作设置:
我有几个 Play 2.4 应用程序 运行ning 在 Heroku 中,带有工作过滤器,这是我在 Play 2.4.6 应用程序前面的示例我现在:
在build.sbt
确保指定 filters
依赖项:
libraryDependencies ++= Seq(
ws,
cache,
filters,
...
)
在application.conf
配置 CORS 模块:
play.modules.enabled += "play.filters.cors.CORSModule"
play.filters.cors {
allowedOrigins = null, # This means "all"
allowedHttpMethods = null # This means "all"
exposedHeaders = ["Authorization", "Content-Length", "Content-Type", "Content-disposition"],
preflightMaxAge = 14 days
}
在Filters.scala
(位于 app
目录的根目录):
import javax.inject.Inject
import play.api.http.HttpFilters
import play.filters.cors.CORSFilter
class Filters @Inject() (corsFilter: CORSFilter) extends HttpFilters {
def filters = Seq(corsFilter)
}
如果你已经像那样配置了所有东西并且它仍然不工作,你确定你对 Heroku 的部署实际上已经完成了吗成功地?检查日志 ( % heroku logs --tail
)