使用Facebook即时文章自定义跟踪代码op-tracker和CSP违规
我创建了一个类似于Google Analytics的脚本(在加载时创建脚本,将数据推送到数组,在托管脚本中使用以存储跟踪数据一个数据库)用于Facebook的即时文章,这样我就可以在我的软件内部跟踪统计数据。但问题是,Facebook的提供有关我的脚本CSP错误:使用Facebook即时文章自定义跟踪代码op-tracker和CSP违规
Refused to load the script 'https://My-Domain.com/js/w_analytics.js'
because it violates the following Content Security Policy directive:
"script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com
*.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:*
'unsafe-inline' 'unsafe-eval' fbstatic-a.akamaihd.net
fbcdn-static-b-a.akamaihd.net *.atlassolutions.com blob: data: 'self'".
即时文章标记与代码预期块内的所有脚本正确:
<figure class="op-tracker">
<iframe> [code] </iframe>
</figure>
我目前正在调试这种通过Facebook的调试页面:http://ww.ia-tracker.fbsbx.com/instant_article_test?url=<share_url>
奇怪的是,偶尔我得到一些统计数据,通过从即时文章,BU我的数据库只是不一致或每个页面视图。
Facebook的文档说你可以做一个直接的URL到您的跟踪,就像这样:
<figure class="op-tracker">
<iframe src="http://my-url-tracker.com/">
<!--
The request to http://my-url-tracker.com/ will be rewritten to
include the following query parameters:
ia_share_url: The URL the user shared
ia_title: The article title
-->
</iframe>
</figure>
但问题是,它说,它仅发送这两个参数,当我自己的跟踪需要更多的信息这是我的软件(如UA字符串)是必需的,所以理想情况下我想避免这种方法。
是否有其他人有过使用自定义跟踪脚本的经验?
这个乱搞几天后,我得到了它使用op-tracker
用iframe src
到我的自定义跟踪脚本工作,像这样:
<figure class="op-tracker">
<iframe src="http://my-url.com/tracker.php"></iframe>
</figure>
Facebook的文档不太多走给出有关这种方法,他们忽略信息的小点点:有送出一第三个参数是引荐ia_referrer
(这将返回为ia.facebook.com
)
然后,您可以用您的“tracker.php”的$_GET
和$_SERVER
组合脚本来抓取任何东西你需要为你的脚本其他细节,如:
$instantArticleURL = urldecode($_GET['ia_share_url']);
$HTTPreferrer = $_GET['ia_referrer'];
$userAgent = $_SERVER['HTTP_USER_AGENT'];
$visitorIP = $_SERVER['REMOTE_ADDR'];
您可能还需要包括这个header()
在tracker.php以确保Facebook能够访问脚本(修改以适应您的网站的需求,显然):
header("Access-Control-Allow-Origin: https://www.facebook.com");
希望这将节省别人头疼了几天:)