表现描述:
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/