Jenkins HTML发布插件:允许脚本权限问题

12

我正在尝试使用Jenkins中的HTML发布器插件报告我的.html文件。然而,由于HTML发布器已更新到1.10版本,无法发布HTML。

我收到的错误消息:

Blocked script execution in '{mydomain}' because the document's frame is sandboxed and the 'allow-scripts' permission is not set.

Uncaught SecurityError: Failed to read the 'localStorage' property from 'Window': The document is sandboxed and lacks the 'allow-same-origin' flag.

我找到了这个文档:https://wiki.jenkins-ci.org/display/JENKINS/Configuring+Content+Security+Policy

它介绍了CSP。

我使用以下参数运行Jenkins:

/usr/bin/java -Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=sandbox allow-scripts; style-src 'unsafe-inline' *;script-src 'unsafe-inline' *; -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080 --ajp13Port=-1 

但仍然得到了同样的错误。

我尝试的参数:

 1. -Dhudson.model.DirectoryBrowserSupport.CSP="sandbox; default-src 'self';"
 2. -Dhudson.model.DirectoryBrowserSupport.CSP=
 3. -Dhudson.model.DirectoryBrowserSupport.CSP="sandbox; default-src *;"
 4. -Dhudson.model.DirectoryBrowserSupport.CSP="sandbox allow-scripts; default-src *;"    

.html文件位于:

{mydomain}/job/{job_name}/Doc/index.html
3个回答

19

我遇到了类似的问题,并采用了以下解决方法:

步骤:

  1. 进入Jenkins管理页面(以管理员身份登录)。
  2. 进入“管理Jenkins”->“脚本控制台”
  3. 然后在脚本控制台中复制并粘贴以下内容,即可使其正常工作

片段: System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "sandbox allow-scripts; default-src *; style-src * http://* 'unsafe-inline' 'unsafe-eval'; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'");

链接提供了有关我们在上述代码行中设置的每个参数的更多详细信息。

注意:如果您希望在Jenkins配置中保留此更改,请注意: @RayKim指出这不是一种可持续的变化。在这种情况下,您应该在JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.remoting.Launcher.pingIntervalSec=0"中设置这些属性值。

设置此变量后,您需要重新启动Jenkins以加载新配置。


1
需要注意的是,这个设置在重启后不会生效。为了使其永久生效,在CentOS中更新(/etc/sysconfig/jenkins)中的"JENKINS_JAVA_OPTIONS",而在其他发行版中可能在(/etc/default/jenkins)中。 - Ray Kim

9

你可以尝试使用空白的CSP选项吗?

/usr/bin/java -Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP= -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080 --ajp13Port=-1

在我的Jenkins实例中,它解决了我的报告问题。

我知道这不是一个安全的选项,但我没有找到其他的解决方案 :(


2
我解决了这个问题。你的答案是正确的,但还应该额外清除浏览器缓存。谢谢你。 - BJ Kim

2

以上方法对我没有用;

我尝试了以下方法:

管理 Jenkins -> 脚本控制台 复制粘贴以下内容

System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")

对于永久性解决方案: 在/etc/default/jenkins下的JAVA_ARGS中添加以下内容:

-Dhudson.model.DirectoryBrowserSupport.CSP=""

如何加载图片。它对PNG格式的图片没有帮助。 - RamPrakash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接