我正在尝试在项目中使用内联脚本,并且不断收到此错误:'拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“ script-src'self'”。要启用内联执行,要么使用'unsafe-inline'关键字,要么使用一个哈希('sha256-hyQXPyDjuL7UGCz8hPIbJ2ZzKwE8uqNzvUJB9 / 9T6jc ='),或者使用随机数(nonce)('nonce -...')。
我在这里查看了许多其他类似的问题,他们都说这与meta标签有关,并包含如下内容: <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' http://* 'unsafe-inline'; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'" />
但这没有什么区别,我从我的所有标记中删除了所有标记<head>
,但仍然收到相同的错误。这个问题可能来自<head>
哪里?香港专业教育学院用快递发电机创建了我的项目,但我找不到任何文件中的任何CSP。
我完全无法理解阻止内联脚本的原因,如果我可以提供任何代码,请告诉我,但是由于我不知道是什么原因导致的,所以我不知道要提供什么代码
CSP指令未在元标记中设置,而是在HTTP标头中设置。
因为您用node.js
和标记了问题express
,这是在express中设置CSP标头的示例:
const express = require("express");
const app = express();
const port = 8080;
app.get("/", (req, res) => {
res
.set("Content-Security-Policy", "default-src *; style-src 'self' http://* 'unsafe-inline'; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'")
.send("<html><head></head><body></body></html>");
})
app.listen(port, () => {
console.log("Listening on port %s", port);
});
然后,您可以在响应标题中看到CSP:
curl -v http://localhost:8080
* Rebuilt URL to: http://localhost:8080/
* Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 8080 (#0)
> GET / HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.53.1
> Accept: */*
>
< HTTP/1.1 200 OK
< X-Powered-By: Express
< Content-Security-Policy: default-src *; style-src 'self' http://* 'unsafe-inline'; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'
< Content-Type: text/html; charset=utf-8
< Content-Length: 39
< ETag: W/"27-ghawzGh2y9RPAcFY59/zgzzszUE"
< Date: Tue, 17 Nov 2020 00:01:04 GMT
< Connection: keep-alive
< Keep-Alive: timeout=5
<
* Connection #0 to host localhost left intact
<html><head></head><body></body></html>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句