解決Jenkins報告在瀏覽器無法顯示問題
阿新 • • 發佈:2019-02-13
在使用jenkins定時啟動並收集測試報告的過程中,發現在jenkins上配置的HTML Report開啟之後樣式不對,頁面一片空白:
開啟開發者模式,發現頁面有很多指令碼報錯,提示有很多資原始檔被禁止載入了,百度之後,發現這個是jenkins的安全策略設定,預設的設定為:
sandbox; default-src 'none'; img-src 'self'; style-src 'self';
具體規定是:
不允許JavaScript
不允許外掛(物件/嵌入)
沒有內聯CSS或CSS允許從其他網站
不允許從其他網站圖片
不允許框架
不允許web字型
不允許XHR / AJAX等。
解決的方案就是放鬆些安全策略這。
方法一:可以在Jenkins的Jenkins Script Console(指令碼命令列)裡設定如下:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "script-src 'unsafe-inline'")
點選執行,點幾次,看到下圖的結果之後,設定後,再去重新整理report頁面,測試報告顯示正常
這種是一種臨時方案,jenkins的Tomcat重啟之後,就失效了。
方法二:在jenkins的啟動檔案catalina設定如下:
CATALINA_OPTS="-Dhudson.model.DirectoryBrowserSupport.CSP=\"default-src 'self'; style-src 'self' 'unsafe-inline' www.google.com ajax.googleapis.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' www.google.com; img-src 'self' data:; child-src 'self'\""
重啟Tomcat,重新構建,就OK了
附Jenikns其他策略設定:
設定自定義:
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")
