使用 ajax 从 HTTP 请求执行 javascript 的 CSP 问题

问题描述 投票:0回答:0

使用“严格动态”适用于 CHROME,但不适用于 FIREFOX。

使用 FIREFOX:

  • with 'self' 只有我的脚本文件被加载。但是来自 ajax 的 javascript 代码被拒绝了。
  • 使用“strict-dynamic”我的脚本文件被拒绝,借口是完整性属性的 sha384 哈希值都不对应于子资源的内容!!????

我的 PHP 代码。我应该看到“javascript yes!!!!!!!!!!!!”在控制台中。用 chrome 没问题。 Firefox 拒绝并且不加载我的 jquery

<?
header("Content-Security-Policy: script-src 'strict-dynamic' 'sha384-I7/UTpkJas2maMjJpGmrvEgQecqO8Dta/9Wwh+cQrH6Jj984WRRFhWg4MV/oTkIW' 'nonce-0006c7f26c'; ", true);

if(isset($_GET["ajx"]))
{
    ?>
    YES
    <script>
        console.log('javascript yes !!!!!!!!!!!')
    </script>
    <?
    exit();
}
?>
<!DOCTYPE html>
<html>
<head>
    <script src="../public/plugins/jquery/jquery-3.3.1.min.js" integrity="sha384-I7/UTpkJas2maMjJpGmrvEgQecqO8Dta/9Wwh+cQrH6Jj984WRRFhWg4MV/oTkIW" crossorigin="anonymous"></script>
</head>

<body>
    body <div id="zz"></div>
    <script nonce=0006c7f26c>
    console.log('yes')

    $.ajax({
        type:"POST",
        url:'/public/testCSP.php?ajx=1',
        async:false,

        success : function(response, statut)
        {
            if(response)
            {
                    $('#zz').html(response);
            }
        },
        error : function(resultat, statut, erreur){ if(erreur) alert("Erreur  : "+erreur)},
        complete : function(resultat, statut){   }
    });
    </script>
</body>
</html>
ajax firefox content-security-policy
© www.soinside.com 2019 - 2024. All rights reserved.