CSP 块 google 翻译

CSP block google translate

我正在使用插件通过 Google 翻译来翻译 Wordpress 网站。我已经为网站设置了内容安全策略,这将导致 Wordpress 插件无法翻译网站,因为 CSP 会阻止它。在网站上设置 CSP 时,有没有办法启用 Google 翻译功能?我在使用 Google 地图时遇到了同样的问题,我已经通过将 google.com 地址添加到 CSP 解决了这个问题,但是我不知道如何进行翻译。

CSP 设置:

<?php 
header("Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' https://www.google.com; img-src 'self' data:; style-src 'self' 'unsafe-inline' https://www.google.com; font-src 'self' data:; object-src 'none'; frame-src https://www.google.com; ");
?>

(index):1 Refused to load the script 'https://translate.google.com/translate_a/element.js?cb=GoogleLanguageTranslatorInit' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline' https://www.google.com https://translate.googleapis.com/". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback.

您需要将要允许的每个域添加到您的 CSP header:

  • https://translate.google.comhttps://www.google.com不是一回事
  • https://translate.google.comhttps://translate.googleapis.com/不是一回事

试试:

<?php 
    header("Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' https://www.google.com https://translate.google.com; img-src 'self' data:; style-src 'self' 'unsafe-inline' https://www.google.com; font-src 'self' data:; object-src 'none'; frame-src https://www.google.com; ");
?>

注意 一旦脚本被允许,CSP 可能会阻止来自同一域的其他类型的资源(例如 CSS、iframe),如果是的话在这种情况下,只需将此域也添加到这些类型即可。