加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何在Play 2.3.4中设置资产指纹?

发布时间:2020-12-16 09:32:26 所属栏目:安全 来源:网络整理
导读:版本: 玩2.3.4 sbt 0.13.1 scala 2.11.2 我遵循了documentation on playframework.com来启用公共资产的指纹识别,但是对routes.Assets.versioned的调用从不会生成带摘要散列的版本化文件名。 build.sbt中的相关行: scalaVersion := "2.11.2"pipelineStages
版本:

>玩2.3.4
> sbt 0.13.1
> scala 2.11.2

我遵循了documentation on playframework.com来启用公共资产的指纹识别,但是对routes.Assets.versioned的调用从不会生成带摘要散列的版本化文件名。

build.sbt中的相关行:

scalaVersion := "2.11.2"
pipelineStages := Seq(rjs,digest)

project / plugins.sbt中的相关行:

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.4")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.5")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.0.0")

conf / routes中的相关行:

GET    /assets/*file    controllers.Assets.versioned(path="/public",file: Asset)

主要模板:

@(title: String,lang: String,cssClasses: String,bodyContents: Html)
<!DOCTYPE html>
<html lang="@lang">
  <head>
    <meta charset="UTF-8">
    <title>@title</title>
    <script type="text/javascript" src="@routes.Assets.versioned("javascript/components/main.js")"></script>
  </head>
  <body>
    <div class="layout @cssClasses">
    @bodyContents
    </div>
  </body>
</html>

输出总是:

<!DOCTYPE html>
<html lang="el">
<head>
  <meta charset="UTF-8">
  <title>[title]</title>
  <script type="text/javascript" src="/assets/javascript/components/main.js"></script>
</head>
<body>
...
</body>
</html>

我没有编译错误。指纹只是“不工作”。我假设我缺少一些简单的东西,但我看不到它。

其他注意事项

>运行查找。项目根目录中的名称“* .js”显示没有开头附加摘要的文件,如文档建议
>我已经运行sbt clean dist生成一个生产模式发行版,行为是一样的

有人建议吗

谢谢!

注意:我已经开始在目标/ src_managed / main / routes_reverseRouting.scala中查看生成的类来调试生成的版本化方法,但这似乎对于相当直接的东西来说是过分的。

解决方法

首先,您应该更新到sbt 0.13.5,因为sbt-web及其插件使用0.13.5中引入的称为“自动插件”的sbt功能。

资产管理方式不是在开发模式下触发,您必须通过sbt start(或sbt dist,但需要更多时间)进行测试。

版本化方法只是检查资产是否具有.md5后缀的随播广告。您应该检查这些文件是否存在于target / web中。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读