表現描述:?
jenkins版本2.2,運行測試生成測試報告后,在網頁上查看時,ie顯示正常,firefox和chrome顯示一片空白
如圖:
Content Security Policy: 不能處理未知的指令“sandbox” <未知>
Content?Security?Policy:?頁面設置阻止讀取位于?http://192.168.57.192/jenkins-2.2/job/test/HTML_Report/suites.html的一項資源("default-src?'none'")。?<未知>
Content?Security?Policy:?頁面設置阻止讀取位于?http://192.168.57.192/jenkins-2.2/job/test/HTML_Report/overview.html的一項資源("default-src?'none'")。
原因
Jenkins 1.641/1.625.3 在靜態文件頭中引入了Content-Security-Policy,在jenkins中具體為DirectoryBrowserSupport,它為保護jenkins的html/js,用戶目錄以及文檔等,設置了非常嚴格的權限保護.(譯自jenkins官網)
默認的設設置為
sandbox; default-src 'none'; img-src 'self'; style-src 'self';
這規則如下:
不允許JavaScript
不允許插件(對象/嵌入)
沒有內聯CSS或CSS允許從其他網站
不允許從其他網站圖片
不允許框架
不允許web字體
不允許XHR / AJAX等。
放松規則:
方法一:用java啟動jenkins.war的可以在啟動命令中加參數 -Dhudson.model.DirectoryBrowserSupport.CSP=
如: java -Dhudson.model.DirectoryBrowserSupport.CSP="sandbox; default-src 'unsafe-inline';" -jar jenkins.war
方法二:可以在jenkins的Jenkins Script Console(腳本命令行)里設置方法如下:
在系統管理->腳本命令行,在里面輸入System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", ?"script-src 'unsafe-inline'"), 點擊運行
設置后,再去刷新http report頁面,測試報告顯示正常.
常用的設置
設置一個自定義:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox; default-src 'self';")
清除自定義:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
恢復默認設置:
System.clearProperty("hudson.model.DirectoryBrowserSupport.CSP")
查看當前設置:
System.getProperty("hudson.model.DirectoryBrowserSupport.CSP")
Jenkins CSP參考文檔:?https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy
CSP參考文檔:?http://content-security-policy.com/