Node.js 拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script src'self'”。?

Node.js 拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script src'self'”。?,node.js,express,http,security,https,Node.js,Express,Http,Security,Https,我试图在我的项目中使用内联脚本,但不断出现以下错误: '拒绝执行内联脚本,因为它违反了以下内容安全策略指令:script src'self'。启用内联执行需要'unsafe inline'关键字、哈希'sha256-hyqxpydjul7ugcz8hpipbj2zzkwe8uqnzvujb9/9T6jc='或nonce'nonce-…' 我在这里看到了一堆其他类似的问题,他们都说这与元标记有关,并包括以下内容: 但是这并没有什么区别,我已经从我的系统中删除了所有的元标记,我仍然会得到相同的错误

我试图在我的项目中使用内联脚本,但不断出现以下错误: '拒绝执行内联脚本,因为它违反了以下内容安全策略指令:script src'self'。启用内联执行需要'unsafe inline'关键字、哈希'sha256-hyqxpydjul7ugcz8hpipbj2zzkwe8uqnzvujb9/9T6jc='或nonce'nonce-…'

我在这里看到了一堆其他类似的问题,他们都说这与元标记有关,并包括以下内容:

但是这并没有什么区别,我已经从我的系统中删除了所有的元标记,我仍然会得到相同的错误。这个问题可能来自哪里,除了 ? 我用express generator创建了我的项目,但在我的任何文件中都找不到任何CSP


我完全不知道是什么阻止了内联脚本,如果我能提供任何代码,请让我知道,但我不知道是什么原因造成的,我不知道提供什么代码。

CSP指令不是在meta标记中设置的,而是在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>

CSP指令不是在meta标记中设置的,而是在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>

等一下。。。内容安全策略何时成为仅HTTP@抓紧一些字节,抓紧点。我不知道标签选项。等一下。。。内容安全策略何时成为仅HTTP@抓紧一些字节,抓紧点。我不知道标签选项。