簡體   English   中英

拒絕執行內聯腳本,因為它違反了以下內容安全策略指令:“script-src 'self'”。?

[英]Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self'".?

我正在嘗試在我的項目中使用內聯腳本,但我不斷收到此錯誤:'拒絕執行內聯腳本,因為它違反了以下內容安全策略指令:“script-src'self'”。 啟用內聯執行需要“unsafe-inline”關鍵字、哈希(“sha256-hyQXPyDjuL7UGCz8hPIbJ2ZzKwE8uqNzvUJB9/9T6jc=”)或隨機數(“nonce-...”)。

我在這里查看了許多其他類似的問題,他們都說這與元標記有關,並包含以下內容: <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>之外,這個問題可能來自哪里? 我用 express-generator 創建了我的項目,但我在我的任何文件中都找不到任何 CSP。

我完全不知道是什么阻止了內聯腳本,如果我可以提供任何代碼,請告訴我,但是看到我不知道是什么原因造成的,我不知道要提供什么代碼

CSP 指令未設置在元標記中,而是設置在 HTTP 標頭中。

既然你用node.jsexpress標簽標記了這個問題,下面是一個在 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>

對我來說問題是cheerio版本。 從 1.0.0-rc.12 到 1.0.0-rc.5 之后工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM