在使用jenkins定时启动并收集测试报告的过程中,发现在jenkins上配置的HTML Report打开之后样式不对,页面一片空白:

打开开发者模式,发现页面有很多脚本报错,提示有很多资源文件被禁止加载了,百度之后,发现这个是jenkins的安全策略设置,默认的设置为:

sandbox; default-src 'none'; img-src 'self'; style-src 'self';
具体规定是:

不允许JavaScript

不允许插件(对象/嵌入)

没有内联CSS或CSS允许从其他网站

不允许从其他网站图片

不允许框架

不允许web字体

不允许XHR / AJAX等。
解决的方案就是放松些安全策略这。

方法一:可以在JenkinsJenkins 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")
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐