用于嵌入 youtube 视频的 CSP
CSP for embedding youtube video
我刚开始在 Chrome 上看到我的嵌入式 YouTube 视频(86.0.4240.193 - 最近更新,这可能就是我看到这个的原因) - 这些只是 'reports' ,所以视频仍然显示,但 100 多个错误不可能是正确的!这就是我所看到的:
[Report Only] Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'strict-dynamic' 'unsafe-inline' https: 'report-sample' 'nonce-t9IE7nI2leo7qKxsm7d80g=='".
这是我的 iFrame --
<iframe id="video-iframe" width="500" height="281" src="https://www.youtube.com/embed/HIDDENVIDEO" frameborder="0" allowfullscreen ></iframe>
我不知道 CSP 应该是什么 -- 这是我发现显然解决了他们问题的一个 --
<iframe id="video-iframe" width="500" height="281" src="https://www.youtube.com/embed/HIDDENVIDEO" frameborder="0" allowfullscreen csp="script-src 'self' https://www.google-analytics.com/ https://www.youtube.com/ https://s.ytimg.com/; object-src 'self'; child-src https://www.youtube.com/* https://s.ytimg.com/"></iframe>
没那么多 -- 我只是看到:拒绝显示....
非常感谢任何帮助。
我刚刚查看了 developers.google.com/youtube/iframe_api_reference#Examples
页面,我也看到了同样的事情——这肯定不应该发生,对吗?
如您所见,触发此错误的不是您的 CPS - 您的 CPS 没有 'nonce-t9IE7nI2leo7qKxsm7d80g=='"
令牌。此错误出现在 Google 的 <iframe>
中,完全是 Google 的内部交易。
事实是 Chrome 的几个早期版本存在错误和 did not block eval 表达式。
在版本 86 Chrome 中,他们修复了这个错误,为了验证这一点,他们设置了 Report-Only header 并假调用 eval 以查看报告。
CSP for Youtube 非常简单,不需要 'unsafe-eval',因为所有工作都在独立的 iframe 中:
frame-src youtube.com www.youtube.com;
足以在 iframe 中允许 Youtube。
顺便说一下,您的 CSP 有一个 error - the *
is not allowed in path-part. And be careful with <iframe csp= - 如果服务器不同意您的 CSP,内容将被阻止。
但是这个 <iframe csp=
发挥作用是因为再次出现 Chrome 错误 - 如果 Content-Security-Policy header 存在,它会忽略 Content-Security-Policy-Report-Only。
我能够使用 <head>
中的 meta
标签让我的嵌入式视频正常工作
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src https://*; child-src 'none'; frame-src youtube.com https://www.youtube.com;">
将 https://
添加到 www.youtube.com
我刚开始在 Chrome 上看到我的嵌入式 YouTube 视频(86.0.4240.193 - 最近更新,这可能就是我看到这个的原因) - 这些只是 'reports' ,所以视频仍然显示,但 100 多个错误不可能是正确的!这就是我所看到的:
[Report Only] Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "script-src 'strict-dynamic' 'unsafe-inline' https: 'report-sample' 'nonce-t9IE7nI2leo7qKxsm7d80g=='".
这是我的 iFrame --
<iframe id="video-iframe" width="500" height="281" src="https://www.youtube.com/embed/HIDDENVIDEO" frameborder="0" allowfullscreen ></iframe>
我不知道 CSP 应该是什么 -- 这是我发现显然解决了他们问题的一个 --
<iframe id="video-iframe" width="500" height="281" src="https://www.youtube.com/embed/HIDDENVIDEO" frameborder="0" allowfullscreen csp="script-src 'self' https://www.google-analytics.com/ https://www.youtube.com/ https://s.ytimg.com/; object-src 'self'; child-src https://www.youtube.com/* https://s.ytimg.com/"></iframe>
没那么多 -- 我只是看到:拒绝显示....
非常感谢任何帮助。
我刚刚查看了 developers.google.com/youtube/iframe_api_reference#Examples
页面,我也看到了同样的事情——这肯定不应该发生,对吗?
如您所见,触发此错误的不是您的 CPS - 您的 CPS 没有 'nonce-t9IE7nI2leo7qKxsm7d80g=='"
令牌。此错误出现在 Google 的 <iframe>
中,完全是 Google 的内部交易。
事实是 Chrome 的几个早期版本存在错误和 did not block eval 表达式。
在版本 86 Chrome 中,他们修复了这个错误,为了验证这一点,他们设置了 Report-Only header 并假调用 eval 以查看报告。
CSP for Youtube 非常简单,不需要 'unsafe-eval',因为所有工作都在独立的 iframe 中:
frame-src youtube.com www.youtube.com;
足以在 iframe 中允许 Youtube。
顺便说一下,您的 CSP 有一个 error - the *
is not allowed in path-part. And be careful with <iframe csp= - 如果服务器不同意您的 CSP,内容将被阻止。
但是这个 <iframe csp=
发挥作用是因为再次出现 Chrome 错误 - 如果 Content-Security-Policy header 存在,它会忽略 Content-Security-Policy-Report-Only。
我能够使用 <head>
meta
标签让我的嵌入式视频正常工作
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; img-src https://*; child-src 'none'; frame-src youtube.com https://www.youtube.com;">
将 https://
添加到 www.youtube.com