You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Active Choice参数返回HTML丢失<script>标签如何解决

问题根因

你遇到的<script>标签和onchange属性被移除的问题,是Active Choice插件默认开启的HTML安全过滤机制导致的:为了防范XSS攻击,插件会用OWASP HTML清洗器过滤所有返回的HTML内容,默认会移除<script>标签、所有on开头的事件属性,以及其他存在安全风险的HTML元素和属性。

解决方法

方法1:关闭Active Choice的HTML清洗(适合内网安全可控的Jenkins环境)

  • 进入Jenkins管理页面,依次打开「Manage Jenkins → Security → 全局安全配置」
  • 找到「Active Choices Plugin」相关的配置段,取消勾选 Sanitize HTML generated for Active Choices HTML parameters 选项
  • 保存配置后重新执行任务,你原来的代码里的script标签和onchange属性就不会被过滤了。

方法2:调整清洗规则保留指定标签和属性(更安全,适合公网暴露的Jenkins)

如果不想完全关闭安全过滤,可以自定义允许的HTML标签和属性白名单:

  • 同样在全局安全配置的「Active Choices Plugin」配置段,找到自定义HTML白名单的输入框
  • 加入以下规则,允许script标签和onchange属性:
script:src,type
select:onchange
  • 保存配置后即可生效。

额外注意:Jenkins内容安全策略(CSP)限制

如果调整上述配置后脚本仍然无法执行,需要检查Jenkins的CSP配置,默认的CSP规则会禁止内联脚本执行,可以临时调整CSP规则测试:

  • 进入Jenkins脚本控制台(Manage Jenkins → Script Console)
  • 执行以下代码临时修改CSP规则:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline';")

如果需要永久生效,需要在Jenkins启动参数中加入上述系统属性配置。

调整后可正常运行的代码

你原来的代码只需要删除select标签style属性后多余的逗号即可:

if (!Settings.contains("ExtraDeployTargets"))
{
    return "";
}

html =
  """
<script>
    function Test(selectObject)
    {
        console.log("Hi");
    }
</script>

<label style="font-size: 14px; font-weight: bold; display: inline;">
    Choose number of additional instances:
</label>
<select name="value" style="height: 30px; font-size: 14px; display: inline-block;" onchange="Test(this)">
    <option value="AdditionalInstancesCount=0">1</option>
    <option value="AdditionalInstancesCount=1">1</option>
    <option value="AdditionalInstancesCount=2">2</option>
    <option value="AdditionalInstancesCount=3">3</option>
    <option value="AdditionalInstancesCount=4">4</option>
    <option value="AdditionalInstancesCount=5">5</option>
</select>
  """

return html;

内容的提问来源于stack exchange,提问作者Vladyslav Lishchyna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:27:04