尝试redoc-cli
(https://github.com/Redocly/redoc/)生成静态文档。这些错误没有运气。看来Content-Security-Policy
根本不允许JS代码。
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-g6NjhUYDGd6SXSIYkvuQkZhdbtqx8hqNKVM8JKvqpy4='), or a nonce ('nonce-...') is required to enable inline execution.
<meta
http-equiv="Content-Security-Policy"
content="
base-uri;
connect-src *;
default-src * 'unsafe-inline' 'unsafe-eval' data: gap: https://ssl.gstatic.com;
font-src * data:;
form-action;
img-src * data:;
manifest-src *;
media-src;
object-src *;
report-to;
script-src * 'unsafe-inline' 'unsafe-eval';
script-src-attr * 'unsafe-inline' 'unsafe-eval';
script-src-elem * 'unsafe-inline' 'unsafe-eval';
style-src * data: 'unsafe-inline';
style-src-attr * data: 'unsafe-inline';
style-src-elem * data: 'unsafe-inline';
">
更新
最终确定。
服务器应发送以下标头:
“ Content-Security-Policy” =“ script-src blob:” “ Content-Security-Policy” =“ worker-src blob:”
HTML应该具有manifest.json
和其他字段:
{
"content_security_policy": "script-src * 'unsafe-inline' 'unsafe-eval'",
"csp": "script-src * 'unsafe-inline' 'unsafe-eval'"
}
答案 0 :(得分:1)
从错误您可以看到,拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“ script-src'self'” 发生在script-src 'self'
中。
但是您的meta标签中的CSP没有这个。
这意味着您实际上已经发布了另一个CSP。通常,应用中间件具有通过HTTP标头发布的默认CSP,但从技术上讲,您也可以具有2个元标记CSP。 如果有2个CSP,则采用较严格的CSP。
检查2 <meta http-equiv="Content-Security-Policy"
的HTML代码,并在开发人员工具中检查Content-Security-Policy HTTP标头(here是一个教程)。
修复上述问题后
'unsafe-eval'
令牌。这是页面的全局标志,只能在 script-src / default-src 中使用(请参见第4段的note)。*
和data:
。它控制标记中的style='...'
属性,并且那里没有使用任何方案源。*
。它控制onClick='...'
之类的事件处理程序,或<a href='javascript:...'
之类的javascript导航,除了javascript:
之外,没有其他使用任何方案源。完整check-list of errors。但是您可以在CSP中忽略上述内容,浏览器只会忽略这些内容。