我正在尝试使用 play 框架 2.6 和 scala 设置一个简单的应用程序,但我似乎无法在 html 模板上运行内联 javascript。我不断收到错误:
拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“default-src 'self'”。启用内联执行需要“unsafe-inline”关键字、哈希值(“sha256-DdH/amfJizOgk2xZ+Xst5j13qHxPYrrrfT6x/TzfYiA=”)或随机数(“nonce-...”)。另请注意,“script-src”未明确设置,因此“default-src”用作后备。
我的斯卡拉代码是:
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
但这也不起作用。我还能尝试什么?
The
play.filters.headers.contentSecurityPolicy = null
是正确的,现在删除
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">
然后它必须按您的预期工作
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)