【发布时间】:2018-07-25 06:59:51
【问题描述】:
我正在尝试使用 play framework 2.6 和 scala 设置一个简单的应用程序,但我似乎无法从我的 html 模板中运行内联 javascript。我不断收到错误:
拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“default-src 'self'”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-DdH/amfJizOgk2xZ+Xst5j13qHxPYrrrfT6x/TzfYiA=”)或随机数(“nonce-...”)。另请注意,'script-src' 未显式设置,因此 'default-src' 用作后备。
我的 scala 代码是:
package controllers
import javax.inject._
import play.api._
import play.api.mvc._
import play.twirl.api.Html
class HomeController @Inject()(cc: ControllerComponents) extends
AbstractController(cc) {
def index() = Action { implicit request: Request[AnyContent] =>
Ok(views.html.main("Hello World"))
}
}
我的 html.main.html 文件看起来像:
@(title: String)
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">
<title>@title</title>
<link rel="stylesheet" media="screen"
href="@routes.Assets.versioned("stylesheets/main.css")">
<link rel="shortcut icon" type="image/png"
href="@routes.Assets.versioned("images/favicon.png")">
</head>
<body>
<script type = "text/javascript">
document.write("Check");
</script>
<script src = "@routes.Assets.versioned("javascripts/main.js")" type =
"text/javascript"></script>
</body>
</html>
所以理想情况下,当我通过本地主机连接时,它应该在屏幕上打印“检查”。我尝试将我的 application.conf 文件更改为
play.filters.headers.contentSecurityPolicy = null
但这也没有用。我还能尝试什么?
【问题讨论】:
-
这可能听起来很疯狂,但请尝试移动内联脚本,使其成为最后一个 javascript 标记。然后尝试使用
alert("Check")代替 -
@RobertUdah 我刚试了一下,没用
-
这似乎不是 Play 特有的。查看stackoverflow.com/questions/8502307/…
标签: javascript html scala playframework