2017-04-13 142 views
2

我是CSP的新手,因此可能會發生錯誤,但在這裏。我有一個用於菜單下拉的小腳本,但是當我點擊菜單按鈕來觸發它時,我在控制檯中收到一條警告。該菜單做它應該如此,腳本正在運行,但我不知道爲什麼錯誤發生。內容安全策略警告

這是我<body>所有的HTML:

<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

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'); 
    }); 
}); 

這是我的CSP,使用set .htaccess

Header set Content-Security-Policy: "default-src 'none'; script-src 'self' https://ajax.googleapis.com; connect-src 'self'; img-src 'self'; style-src 'self' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; frame-ancestors 'none'" 
Header set X-Frame-Options: "DENY" 
Header set X-XSS-Protection: "1; mode=block" 
Header set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" 

頁面加載好,控制檯中沒有錯誤。但是,當我在菜單上單擊切換我得到這個控制檯錯誤:

拒絕執行JavaScript URL,因爲它違反了以下內容安全政策指令:「腳本的src‘自我’https://ajax.googleapis.com」。 「內聯不安全」關鍵字,散列('sha256 -...')或一個隨機數('nonce -...')是啓用內聯執行所必需的。

如果有人可以提供一些線索,這將是驚人的。您可以在這裏看到實際的頁面:

https://booster.mikeharrisondesign.com

回答

-2
href="javascript:void(0)" 

你有一個JavaScript網址。你的CSP禁止它。不要這樣做。

JavaScript的網址是可怕的呢。鏈接應該鏈接到某個地方。如果你想要一個交互式元素,除了點擊時觸發JS,什麼也不做:使用按鈕。

+0

不要忘記設置你的''

+0

@ Xenos - 他們已經這樣做了,你可以在代碼中看到它.Java URL是一個*什麼都不做的腳本,所以他們可以使用鏈接在他們應該使用的某個地方。按鈕 – Quentin

+0

哦,心動不如行動,今年,他們已經把聽衆對這個錨對不起,我得趕緊閱讀 – Xenos