javascript - Content-Security-Policy在哪里可以配置?

标签 javascript php apache content-security-policy facebook-pixel

对于客户,我在他们的网站上实现了 Facebook Pixel,以允许他们收集营销统计数据。 Facebook Pixel 在 <head> 中使用以下 Javascript 实现标签:

<script>
  !function(f,b,e,v,n,t,s)
    {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
    n.callMethod.apply(n,arguments):n.queue.push(arguments)};
    if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
    n.queue=[];t=b.createElement(e);t.async=!0;
    t.src=v;s=b.getElementsByTagName(e)[0];
    s.parentNode.insertBefore(t,s)}(window,
    document,'script',
    'https://connect.facebook.net/en_US/fbevents.js');
    fbq('init', '*****************');
    fbq('track', 'PageView');
</script>
<noscript>
  <img height="1" width="1" src="https://www.facebook.com/tr?id=***************&ev=PageView&noscript=1" />
</noscript>

如您所见,脚本正在调用 connect.facebook.net 上的 Javascript 文件领域。当代码上传到生产服务器时,由于违反 Content-Security-Policy,我在 Chrome 控制台中收到以下错误指令:

Refused to load the script 'https://connect.facebook.net/en_US/fbevents.js' because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe-inline' 'unsafe-eval' platform.twitter.com s3.amazonaws.com cdn.ckeditor.com cdn.syndication.twimg.com www.google-analytics.com ajax.googleapis.com player.vimeo.com".

我已经查看了网站的源代码(用 PHP 构建)和 Content-Security-Policy那里的任何地方都没有配置指令。也不在 .htaccess 中文件。虽然我不太确定,如果这可以.htaccess 中完成文件。

编辑:(添加响应 header 的图像) Response headers

如错误消息和上面的屏幕截图所示, Content-Security-Policy某处定义的指令,我需要找到它,所以我可以在那里将 Facebook 域列入白名单。我在想,这可能是在服务器级别完成的 httpd.conf ,我无权访问的文件,因为该网站由外部托管服务提供商托管。

所以我的问题是:在哪里 Content-Security-Policy如果没有在 PHP 代码中配置指令,一个 html <meta http-equiv>属性或在 httpd.conf文件?这可以在其他地方完成吗?

最佳答案

据我所知,这些是唯一可以设置内容安全策略的地方:

  1. 元标记(在您的示例中不是这种情况,因为它是标题)
  2. Apache 配置、ether apache2.conf/httpd.conf 或串联到主文件中的 vhost/config 文件之一。如果可以,检查可用站点
  3. .htaccess,如果您不能直接访问 apache 配置,我猜这里就是这种情况。
  4. PHP 的 header()如果标题是手动创建的,则函数。

关于javascript - Content-Security-Policy在哪里可以配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47535629/

相关文章:

php - 存储多维数组中的列数据,同时保留缺失的元素

php - 根据 YEAR 的 MySQL 字段 AUTO_INCREMENT

php - WampServer Apache 模块无法启动

apache - 将 Solr (4.8.1) 指向目录 (Windows 7)

javascript - 使用 Gulp 和 r.js 通过 javascript 应用程序构建有什么区别?

javascript - 在javascript中定位数组中的最后一项

javascript - Sequelize : how to get flattened data, 基于嵌套关联加入表时?

php - 在 PHP 中发送 HTTP GET 请求(不返回目标 URL 的内容,只是执行它)

apache - htaccess 重定向 url 带参数

javascript - 调用模块常量?