内容安全策略警告

时间:2017-04-13 15:38:17

标签: javascript content-security-policy

我是CSP的新手,所以可能会出错,但这里有。我有一个用于菜单下拉菜单的小脚本,但是当我点击菜单按钮触发它时,我在控制台中收到警告。菜单按预期执行,因此脚本正在运行,但我不确定错误发生的原因。

这是我T中的所有HTML:

<body>

这是<div class="responsive-centered-nav"> <a href="javascript:void(0)" class="nav-toggle">Menu</a> <nav> <ul> <li class="nav-item"><a href="#">Home</a></li> <li class="nav-item"><a href="#">About Us</a></li> <li class="nav-item"><a href="#">Services</a></li> <li class="nav-item"><a href="#">Pricing</a></li> <li class="nav-item"><a href="#">Contact</a></li> </ul> </nav> </div> <script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js"></script> <script src="/assets/js/main-min.js"></script> 中的所有内容:

/assets/js/main-min.js

这是我的CSP,使用document.addEventListener("DOMContentLoaded", function() { console.log("DOM fully loaded and parsed"); var html = document.documentElement; html.classList.remove("no-js"); html.classList.add("js"); if (html.classList.contains("js")) { console.log("Javascript is enabled"); } WebFont.load({ google: { families: ['Merriweather:300,300i,700'] } }); }); document.addEventListener('DOMContentLoaded', function() { // Set up some variables var navigation = document.querySelector('.js div.responsive-centered-nav nav'); var toggleButton = document.querySelector('.js div.responsive-centered-nav a.nav-toggle'); toggleButton.addEventListener('click', function(){ navigation.classList.toggle('visible'); }); }); 设置:

.htaccess

页面加载正常,控制台中没有错误。但是,当我点击菜单切换时,我收到此控制台错误:

拒绝执行JavaScript网址,因为它违反了以下内容安全政策指令:“script-src'self'https://ajax.googleapis.com”。要启用内联执行,需要使用'unsafe-inline'关键字,哈希('sha256 -...')或nonce('nonce -...')。

如果有人能够散发一些令人惊叹的光芒。您可以在此处查看该页面:

https://booster.mikeharrisondesign.com

1 个答案:

答案 0 :(得分:-2)

href="javascript:void(0)"

您有一个JavaScript网址。你的CSP禁止它。不要那样做。

无论如何,JavaScript网址都很糟糕。链接应该链接到某个地方。如果你想要一个交互式元素,除了在点击时触发JS时什么都不做:使用按钮。