javascript - 无法从 HTML/EJS 文件运行外部 javascript
问题描述
我正在尝试在 HTML/EJS 页面内的外部文件中运行 javascript。代码如下:
<body onload="initialize()">
//HTML content
<script src="/public/js/gallery.js"</script>
</body>
“initialize()”函数位于“gallery.js”文件中。问题是我不断收到错误消息:
“拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src 'self'”。'unsafe-inline' 关键字、哈希 ('sha256-tPMkUWbNPBXQQ3rlbFhILb35szR89eQb3Z41bzLr+wQ=') 或随机数('nonce-...') 是启用内联执行所必需的。”
我在页面上的“head”标签中尝试了许多尝试修复。其中包括“<meta Content-Security-Policy: script-src 'self' 'unsafe-inline'">”、“Content-Security-Policy: script-src 'self'”和“meta http-equiv="content -安全策略内容=脚本-src"...
这太令人抓狂了……我花了好几个小时试图纠正这个问题。有人可以就问题所在提供一些解释......???我提前谢谢你。问候。
“gallery.js”文件内容如下:
addEventListener("load", initialize);
function initialize() {
//do stuff
}
解决方案
通过禁用禁止内联脚本的 CSP 规则来解决这个问题并不是一个好主意。内联脚本是 XSS 攻击的主要载体。
相反,删除内联脚本并将等效功能放入.js
文件本身。
onload="initialize()"
从 HTML 中删除。
添加addEventListener("load", initialize)
到 JS。
推荐阅读
- aem - 如何只调用一次吊索模型
- sql - 带 2 个参数的 RTRIM
- cucumber - Cucumber: Running features parallely in 4.2
- xcode - Xcode 无法构建:“无法解析构建文件:XCBCore.BuildFile”
- windows - How to install OpenCV with minGW on an offline machine?
- c# - 过滤来自另一个大列表的数据的大列表对象:性能下降
- c++ - remove the character instance from string problem with remove
- python - Passing command line arguments in python - is there more than one standard input?
- python - relation in between a categorical dependent variable and combination of independent variables
- c++ - 在hackerearth中获取TLE