与内容安全政策集成

内容安全政策 (CSP)是一种 以限制允许加载和加载的资源和脚本, 。要启用 CSP,您可以在Content-Security-Policy 来自网络服务器的 HTTP 响应。

配置 CSP 有两种标准方法:

  1. 指定可在网页上注入其资源的网域许可名单。

  2. 指定一个随机 Nonce,系统必须使用该 Nonce 标记页面上的资源 订单。此方法称为严格 CSP

由于 Google 发布商代码 (GPT) 使用的网域会 则我们仅支持严格的 CSP(选项 2)。这种方法无需 维护一份可能过时的域名的滚动列表, 网站。

设置使用 GPT 的 CSP

  1. 在您的网络服务器上启用 CSP。

    按照采用严格的 CSP,按照 设置 CSP 标头并将 Nonce 应用于网页上的每个脚本标记 包括gpt.js。GPT 专门支持下列 CSP 指令:

    Content-Security-Policy:
      object-src 'none';
      script-src 'nonce-{random}' 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' https: http:;
      base-uri 'none';
      report-uri https://your-report-collector.example.com/
    

    如果更宽松的政策适合您的应用场景,您可以选择它。更多 我们可能会取消限制性政策,恕不另行通知。

  2. 启用跨网域呈现。

    广告 iframe 可以加载 CSP。由于同一网域 iframe 会继承顶级窗口的 CSP,而 GPT 无法控制广告素材的内容、同网域 通常情况下,广告素材将无法与 CSP 标头正常配合使用。

    要为所有广告素材启用跨网域呈现,请执行 googletag.pubads().setForceSafeFrame(true) 然后再加载任何广告位。

    <!doctype html>
    <html>
      <head>
        <meta charset="utf-8">
        <title>Hello GPT</title>
        <script src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" nonce="KC7tcz53FHqumKP1" async></script>
        <script nonce="KC7tcz53FHqumKP1">
          window.googletag = window.googletag || {cmd: []};
          googletag.cmd.push(function() {
            googletag.pubads().setForceSafeFrame(true);
          });
        </script>
      </head>
    

测试

我们建议您先通过设置 Content-Security-Policy-Report-Only 标头(而非 Content-Security-Policy。标头报告了违规问题,但仍然允许 它们在网页上