解决Jenkins中无法展示HTML文件样式的问题

通过HtmlRunnerCN.py执行自动化测试生成的Html报告,在jenkins中查看时,会丢失其样式。
原因是因为jenkins的安全设置默认不允许js脚本和css样式的执行。

解决方法为更改jenkins的CSP策略:
之前看到过文章的做法是
System.setProperty(“hudson.model.DirectoryBrowserSupport.CSP”, “default-src ‘self’ ‘unsafe-inline’ ‘unsafe-eval’; img-src data:;”)
这么做仅仅是将default-src设置为’unsafe-inline’ 和’unsafe-eval’,在早期的jenkins版本中这么设置是可以的,但是在Jenkins 2.150.2这么设置还是不能正常加载js和css(应该也和浏览器有关,因为之前我曾经经历过即使不做设置,用火狐浏览器也是可以正常显示的,但是chrome就不行)

最终的做法是:
将引html中引用的js放到script-src的声明里,把引用的css放到style-src的声明里,多个的话用空格隔开

例如,我在script console中执行如下脚本:
System.setProperty(“hudson.model.DirectoryBrowserSupport.CSP”,“sandbox allow-scripts; default-src ‘self’;script-src ‘unsafe-inline’ https://libs.baidu.com/jquery/2.0.0/jquery.min.js https://libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js ; img-src dohko.hpeswlab.net ‘self’ data: ; style-src ‘unsafe-inline’ ‘self’ https://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css;”);
jenkins的脚本执行控制台
设置完成后,可以通过System.getProperty方法查看DirectoryBrowserSupport属性:
System.getProperty(“hudson.model.DirectoryBrowserSupport.CSP”);

Jenkins的默认安全设置不允许js脚本和css样式:
sandbox; default-src ‘none’; img-src ‘self’; style-src ‘self’;
此时网页存在以下限制:
No JavaScript allowed at all
No plugins (object/embed) allowed
No inline CSS, or CSS from other sites allowed
No images from other sites allowed
No frames allowed
No web fonts allowed
No XHR/AJAX allowed

本文参考了网友的文章:https://jingyan.baidu.com/article/219f4bf7bd7028de442d38a1.html
https://www.jianshu.com/p/f1de775bc43e

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值