如何添加'unsafe-inline'关键字来运行内联javascript?



我正在学习javascript并尝试运行一些内联javascript代码。我正在使用电子快速入门指南,在我尝试添加一些内联javascript之前,代码工作得很好。这里是我的index.html:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
<title>Hello World!</title>
</head>
<body>
<script>
console.log("Hello World"); // <-- this is the line causing problems
</script>
<h1>Hello World!</h1>
We are using Node.js <span id="node-version"></span>,
Chromium <span id="chrome-version"></span>,
and Electron <span id="electron-version"></span>.
</body>
</html>

当我尝试加载添加了console.log("Hello World")的网页时,我得到了错误:

拒绝执行内联脚本,因为它违反了以下内容安全策略指令:"script-src 'self'"需要使用'unsafe-inline'关键字、散列('sha256-m/hGOmrcpR2CLf5ZFUFQux1kBtD2znXvM4R5xVpagmI=')或nonce ('nonce-…')来启用内联执行。

错误消息告诉我可以添加'不安全内联关键字。我该怎么做呢?

我试着搜索了一些例子,比如在SO上的这个例子,或者在contentsecuritypolicy.com上的这个指南。但是所有的例子都只是告诉我在内容安全策略中添加'unsafe-inline',而没有实际展示如何做到这一点。

您可以通过将元标记更改为以下内容来添加unsafe-inline。然而,我建议保持不变,只是通过一个单独的文件加载JS,因为改变标签会增加一些安全风险。它被称为不安全

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline'">
<title>Hello World!</title>
</head>
<body>
<script>
console.log("Hello World"); // <-- this is the line causing problems
</script>
<h1>Hello World!</h1>
We are using Node.js <span id="node-version"></span>,
Chromium <span id="chrome-version"></span>,
and Electron <span id="electron-version"></span>.
</body>
</html>

最新更新