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

Solr 9.0中Nashorn脚本访问req变量遇Java安全权限错误

解决Solr 9.0脚本更新处理器访问请求参数的安全错误

问题分析

在Solr 9.0中使用脚本更新处理器时,调用req.getParams().get("commit")触发TypeError: Can not extend/implement [class org.apache.solr.request.SolrQueryRequestBase] because of java.security.错误,核心原因是Solr的安全限制阻止了Nashorn JavaScript引擎直接访问SolrParams相关类的内部实现,导致包装Java对象时触发安全异常。

解决方案

避免直接调用req.getParams()获取参数集合,改用SolrQueryRequest提供的getParam(String name)方法直接获取单个参数值,该方法不会触发安全拦截。

修正后的脚本示例

假设原脚本第15行是:

var commitFlag = req.getParams().get("commit");

修改为:

var commitFlag = req.getParam("commit");

如果需要获取多值参数,可以使用getParams(String name)方法:

var commitValues = req.getParams("commit");

额外说明

如果必须访问完整的SolrParams对象,需要修改Solr的安全策略文件(不推荐,会降低安全性),官方更建议使用上述直接获取参数的方法来兼容安全限制。

内容的提问来源于stack exchange,提问作者Matthew Castrigno

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:25:30