我使用Content Security Policy。我得到了这样真实有用的警告:
CSP violation!
{ 'csp-report':
{ 'document-uri': 'about:blank',
referrer: '',
'violated-directive': 'img-src \'self\' data: pbs.twimg.com syndication.twitter.com p.typekit.net',
'original-policy': 'longPolicyGoesHere',
'blocked-uri': 'https://platform.twitter.com',
'source-file': 'https://platform.twitter.com',
'line-number': 2 } }
很酷,我需要将'platform.twitter.com'添加为img-src
但有时我会得到像这样的空白CSP警告:
CSP violation!
{}
即,有一个POST,但JSON是空的。我该怎么办?
答案 0 :(得分:1)
我发现问题所在;对您来说可能不是问题。
由于CSP报告程序使用POST方法调用report-uri文件,因此我假设$ _POST变量将包含发布的数据。事实证明这是错误的,因为数据不是从表单或文件上传中发送的(请参见PHP "php://input" vs $_POST)。
以下代码非常适合我(由于https://mathiasbynens.be/notes/csp-reports中略有错误的代码的启发):
<?php
// Receive and log Content-Security-Policy report
// (WriteLog function omitted here: it just writes text into a log file)
$data=file_get_contents('php://input');
if (!$data) // Data is usually non-empty
exit(0);
// Prettify the JSON-formatted data.
$val=json_decode($data);
$data = json_encode($val,JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
WriteLog($data);
?>